====== Mavenで標準以外の成果物(artifact)を作成する ======
{{tag>java maven}}
===== 依存関係を含む実行可能jar(fat-jar)を作成する =====
''mvn package'' で ''target/${project.artifactId}-${project.version}-jar-with-dependencies.jar'' を生成。
maven-assembly-plugin
fat-jar
package
single
jar-with-dependencies
com.example.Main
false
詳細は [[https://maven.apache.org/plugins/maven-assembly-plugin/single-mojo.html|assembly:single]] を参照。
==== 依存関係を含む実行可能jar(fat-jar)を複数作成する ====
Mavenの理念は一つのモジュールに一つの成果物。
本来は別のモジュールにするべき。
''execution''を複数作成し、''configuration''をその中に移動する。
jarファイル名がぶつかるので''finalName''で変更する。
maven-assembly-plugin
make-first-jar
package
single
jar-with-dependencies
somepackage.FirstMainClass
first
make-second-jar
package
single
jar-with-dependencies
somepackage.SecondMainClass
second
===== 依存関係を含む実行可能jar(fat-jar)を作成する、ただし一部の依存jarファイルを除く =====
''mvn package'' で ''target/${project.artifactId}-${project.version}-executable.jar'' を生成。
maven-assembly-plugin
executable-jar
package
single
src/assembly/executable.xml
com.example.Main
false
executable
jar
false
runtime
true
true
log4j:log4j
org.slf4j:slf4j-log4j12:jar:1.7.10
===== 依存するjarファイルをコピーする =====
''mvn package'' で ''target/lib'' に依存するjarファイルをコピーする。
org.apache.maven.plugins
maven-dependency-plugin
copy-dependencies
prepare-package
copy-dependencies
runtime
${project.build.directory}/lib
===== ソースjarファイルを作成する =====
''mvn package'' で ''target/${project.artifactId}-${project.version}-sources.jar'' を生成。
maven-source-plugin
attach-sources
jar-no-fork
===== javadoc jarファイルを作成する =====
''mvn package'' で ''target/${project.artifactId}-${project.version}-javadoc.jar'' を生成。
maven-javadoc-plugin
attach-javadocs
jar
===== 配布用のファイルを作成する =====
''mvn package'' で ''target/${project.artifactId}-${project.version}-bin.zip'' と ''target/${project.artifactId}-${project.version}-bin.tar.gz'' を生成。
maven-assembly-plugin
create-archive
package
single
src/assembly/bindist.xml
false
bin
tar.gz
zip
true
src/dist
bin/*.sh
src/dist
bin/*.sh
0755
lib
runtime
アセンブリデスクリプタの詳細は [[https://maven.apache.org/plugins/maven-assembly-plugin/assembly.html|Assembly]] を参照.