私はmavenアセンブリプラグインを使用して.tar
ファイルを生成し、他のいくつかのファイル、依存jarを含みます。すべてのファイルは、構成Assembly.xml
内の指定されたフォルダーに正しくコピーされています。
元のプロジェクトjarも最終的なtarファイルに含めたいのですが、現在は表示されません。
Assembly:single
ゴールを発行すると、次のメッセージが表示されます。
[警告]プロジェクトアーティファクトを含めることはできません:com.my.newpkg.project1:jar:0.0.3.0;関連するファイルやディレクトリはありません。
SOを読んだ後、次の構成をpom.xml
に追加するとjarが追加されるはずですが、期待した結果が得られません。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>com.my.newpkg.project1.MainClass</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
<formats>
<format>dir</format>
<format>tar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<excludes>
<exclude>junit:junit</exclude>
</excludes>
<fileMode>0755</fileMode>
</dependencySet>
</dependencySets>
それで、設定はまだ正しくありませんか?またはここで何か不足していますか?
現在のプロジェクトjarを最終的なtarに追加するにはどうすればよいですか
<dependencySet>
では、<useProjectArtifact>false</useProjectArtifact>
と言って現在のプロジェクトjarを除外できますが、デフォルトではtrueであるため、機能するはずです。
警告から、最初にmvn package
を実行するのを忘れたため、ターゲットディレクトリからjarを使用できません。
または、1つのコマンドでmvn package Assembly:single
を実行します。
または、maven-Assembly-pluginをpomに追加して「パッケージ」フェーズにバインドし、mvn package
で自動的にトリガーされるようにします。
<plugin>
<artifactId>maven-Assembly-plugin</artifactId>
<executions>
<execution>
<id>tar-Assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>etc/Assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>