2017-09-18 12 views
1

データベースの永続性ロジックを含むカスタムライブラリDao.jarがあります。
私は、以下のようにコードが変更された新しいバージョンで毎回artifactoryするために、このjarファイルをプッシュ:
pom.xmlを更新せずに、maven webプロジェクトにカスタムライブラリの最新バージョンをバンドル/パッケージ化する方法は?

mvn install:install-file -Dfile=C:\*****\target\Dao.jar -DgroupId=non-public.com.karthik -DartifactId=dao -Dversion=2.0 -Dpackaging=jar 

私は、このjarファイルに依存している別のMavenのWebプロジェクトを持っています。このjarファイルは、maven webappプロジェクト/ warにパッケージ化/バンドルされています。

<dependency> 
    <groupId>non-public.com.karthik</groupId> 
    <artifactId>dao</artifactId> 
    <version>2.0</version> 
</dependency> 

現在、私はのpom.xml &再構築MavenのWebアプリケーションプロジェクトにDAOの依存関係のバージョンを変更していますたびDao.jarの新しいバージョンがartifactoryで利用可能です。
pom.xmlの依存関係のバージョンを手動で変更せずに、Dao.jarの最新バージョンでmavenプロジェクトをビルドするオプションはありますか?

+0

jarファイルをArtifactoryにデプロイし、犠牲に基づいてライブラリを使用します。さらに、不変なリリースの原則に違反しているため、同じjarファイルを何回か変更することになります。ベストプラクティスは、jarファイルを変更するたびにバージョンを変更することです。 – khmarbaise

+0

pom.xmlを変更せずにリリースされたバージョンをアップグレードすると、残念なことに、デザイナーは...誰にも変更が加えられたことに気づくでしょう元のjarファイルも...それの兆候はありません.. – khmarbaise

+0

@khmarbaise私はあなたのコメントを完全に理解できませんでしたが、Dao.jarの依存性のバージョンを更新する以外のオプション/アプローチ新しいバージョンのカスタムライブラリ(Dao.jar)がartifactoryにプッシュされるたびに、maven Webプロジェクト(WAR)のpom.xmlに追加されます。どのように常に最新のjarファイルをMaven Webプロジェクトにパッケージングするのですか?子プロジェクトとしてDao.jarを作成しますか? – Karthik

答えて

0

Mavenが依存関係を検索すると、まずローカルリポジトリ(〜/ .m2/repository)がチェックされます。見つからなければ、POMファイルまたは設定ファイル(〜/ .m2/settings.xml)に定義されているリモートリポジトリなどの他のリソースを試します。

この論理によって、まだローカルリポジトリにインストールされていないローカルプロジェクトのバージョンを使用しようとすると、Mavenはそれを他のプロジェクトで使用することができません。

常にバージョン番号を変更せずに、両方のプロジェクトを手動で構築しないようにします。両方のプロジェクトの親POMを作成することができます。親は、子プロジェクトの1つが他のプロジェクトに依存し、正しい順序で構築することを認識することができます。

+0

お返事ありがとうございます。両方のプロジェクトで親POMを作成すると、子プロジェクト-Daoは別の子プロジェクト(maven Webプロジェクト)の依存関係になります。 1つの子プロジェクトを別の子プロジェクトの依存関係として定義できますか? – Karthik

+0

@ Karthikはい、親POMが最初に構築するものを自動的に見つけ出します。 –

+0

ok。モジュールを備えた親POMを作成する予定です。モジュールの順序は、子プロジェクトの作成順序を決定します。私は正しい? – Karthik

0

ルチアーノの入力に基づいて、私はマルチモジュールMavenプロジェクト/ 2モジュール(DAO &ウェブ)

<groupId>com.karthik</groupId> 
<artifactId>test</artifactId> 
<packaging>pom</packaging> 
<version>1.0-SNAPSHOT</version> 

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>3.0.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>oracle</groupId> 
      <artifactId>ojdbc6</artifactId> 
      <version>11.2.0.3</version> 
     </dependency> 
     .......... 
    </dependencies> 
</dependencyManagement> 
<modules> 
    <module>web</module> 
    <module>dao</module> 
</modules> 

子供モジュール#1を持つ親POM作成している - DAO

<parent> 
    <groupId>com.karthik</groupId> 
    <artifactId>test</artifactId> 
    <version>1.0-SNAPSHOT</version> 
</parent> 
<artifactId>dao</artifactId> 
<packaging>jar</packaging> 
<dependencies> 
    <dependency> 
     <groupId>oracle</groupId> 
     <artifactId>ojdbc6</artifactId> 
    </dependency> 
    ......... 
    </dependencies> 

子モジュール#2 - web(POMで宣言されたdao依存関係)

<parent> 
     <groupId>com.karthik</groupId> 
     <artifactId>test</artifactId> 
     <version>1.0-SNAPSHOT</version> 
</parent> 
<artifactId>web</artifactId> 
<packaging>war</packaging> 
<dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
     </dependency> 
     <dependency> 
     <groupId>com.karthik</groupId> 
     <artifactId>dao</artifactId> 
     <version>1.0-SNAPSHOT</version> 
     </dependency> 
     ......... 
</dependencies> 

mvnパッケージコマンドを親pomのルートパスで実行すると、web.warとdao.jarの両方のモジュールがビルドされます。この方法は、常に最新のバージョンのdao.jarがweb.warにパッケージされていることを保証します。