====== 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]] を参照.