これは ear プロジェクトの単純化された例です。親 pom は EAR、EJB、および jar を集約します。
私はSVNに保存されたMavenプロジェクトにこの構造を持っています:
parent/
|- pom.xml
|- modulA/
| |- pom.xml
|- modulB/
| |- pom.xml
modulB には modulA の依存関係があります
pom.xml にはモジュールセクションがあります
<modules>
<module>modulA</module>
<module>modulB</module>
</modules>
そして、依存関係管理セクション
<dependencyManagement>
<dependencies>
<dependency>
<groupId>group</groupId>
<artifactId>modulA</artifactId>
<version>0.0.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>group</groupId>
<artifactId>modulB</artifactId>
<version>0.0.2-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
サブモジュールは親を参照します
<parent>
<groupId>group</groupId>
<artifactId>parent</artifactId>
<version>0.0.2-SNAPSHOT</version>
<relativePath>..</relativePath>
</parent>
maven 2.2.1(Windows)で初めてコンパイルしたときのPCで
mvn clean compile
問題はありません
しかし.... Jenkinsが初めてコンパイルしようとしたとき(Maven 2.2.1 Linux RedHat)
Missing:
----------
1) modulA:jar:0.0.2-SNAPSHOT
Try downloading the file manually from the project website.
Then, install it using the command:
mvn install:install-file -DgroupId=group -DartifactId=modulA -Dversion=0.0.2- SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=group -DartifactId=modulA -Dversion=0.0.2-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
Path to dependency:
1) modulB:ejb:0.0.2-SNAPSHOT
2) modulA:jar:0.0.2-SNAPSHOT
----------
1 required artifacts are missing.
どうして????????
その後、PC から Artifactory にプロジェクトをデプロイすると、Jenkins はリポジトリからアーティファクトをダウンロードするため、Jenkins には問題がありません...しかし、なぜ Jenkins はリポジトリ内のアーティファクトに依存するのでしょうか?
:(
前もって感謝します
編集:
dependencyManagement セクションは依存関係を「定義」するだけだと思いましたが、サブモジュールが依存関係を使用しない場合、依存関係はサブモジュールに追加されません。dependencyManagement セクションを削除しても、Jenkins の問題は引き続き発生します。
私のPCでは問題なく動作します。