私は言及された問題を解決しようとしました。私の場合はうまくいきました(maven-jar-plugin v2.2)。私は3つの子を持つjarloadingと呼ばれる親プロジェクトを持っています:
- main: に依存する
- a: b への依存関係あり
- b: a に依存する
電話した後
mvn package
を含む展開スクリプトを使用して公開する
rm -r ~/Desktop/jarloading-bin
mkdir ~/Desktop/jarloading-bin
cp a/target/a-0.0.1-SNAPSHOT.jar ~/Desktop/jarloading-bin/
cp b/target/b-0.0.1-SNAPSHOT.jar ~/Desktop/jarloading-bin/
cp main/target/main-0.0.1-SNAPSHOT.jar ~/Desktop/jarloading-bin/
ディレクトリへの変更
cd ~/Desktop/jarloading-bin
そして走っている
java -jar main-0.0.1-SNAPSHOT.jar
それはうまくいきました。
しかし実際には、クラスパスがマニフェスト ファイルにどのようにリストされているかがポイントです。
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: rschmid
Build-Jdk: 1.6.0_07
Main-Class: Main
Class-Path: a-0.0.1-SNAPSHOT.jar b-0.0.1-SNAPSHOT.jar
メインプロジェクトの pom.xml:
...
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<index>true</index>
<manifest>
<mainClass>Main</mainClass>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>ch.fiftynine.lab</groupId>
<artifactId>a</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
...
プロジェクトの pom.xml:
...
<dependencies>
<dependency>
<groupId>ch.fiftynine.lab</groupId>
<artifactId>b</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
...
b プロジェクトの pom.xml には、特別なことは何も含まれていません。
および添付のソース コードとバイナリ:
ソース コード
バイナリ