MAVENにて実行可能なJarを複数作る話
現在、MQのサンプルプログラムを作成中に、メッセージの送信・受信でそれぞれのjarを作りたいなぁ〜
それぞれのpom.xmlを作るのも変だしなということで調査しました。
( 参考記事 : MAVENにて実行可能なJarを作る話 )
先に答えを書きますと、1回のコマンドで二つの実行可能なjarは作成可能です
maven-shade-pluginプラグインって定義がexecutionsを指定するわけで、つまりは複数形です
なので、それぞれに定義を書いてやれば二つでも作成可能になっています。
ファイル名はconfiguration > finalNameにて指定します。
※ idは違う値を指定してください
今回は別のサンプルソースを使っています。
生成jar | ID | finalName | 実行クラス |
ReceiveQueue.jar | executable-receivequeue-jar | ReceiveQueue | org.mmpp.example.rabbitmq.ReceiveQueueApplication |
PostQueue.jar | executable-postqueue-jar | PostQueue | org.mmpp.example.rabbitmq.PostQueueApplication |
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<id>executable-receivequeue-jar</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>ReceiveQueue</finalName>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>org.mmpp.example.rabbitmq.ReceiveQueueApplication</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
<execution>
<id>executable-postqueue-jar</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>PostQueue</finalName>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>org.mmpp.example.rabbitmq.PostQueueApplication</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
パッケージの作成はmvn packageコマンドで作成されます
$ mvn package
別生成ログ
[INFO] --- maven-shade-plugin:3.2.4:shade (executable-receivequeue-jar) @ example.rabbitmq ---
[INFO] Including com.rabbitmq:amqp-client:jar:5.14.0 in the shaded jar.
[INFO] Including org.slf4j:slf4j-api:jar:1.7.32 in the shaded jar.
[INFO] Including org.slf4j:slf4j-simple:jar:1.7.32 in the shaded jar.
[INFO] Replacing original artifact with shaded artifact.
[INFO] Replacing ~/example.rabbitmq/target/ReceiveQueue.jar with ~/example.rabbitmq/target/example.rabbitmq-1.0-SNAPSHOT-shaded.jar
[INFO] Dependency-reduced POM written at: ~/example.rabbitmq/dependency-reduced-pom.xml
[INFO]
[INFO] --- maven-shade-plugin:3.2.4:shade (executable-postqueue-jar) @ example.rabbitmq ---
[INFO] Including com.rabbitmq:amqp-client:jar:5.14.0 in the shaded jar.
[INFO] Including org.slf4j:slf4j-api:jar:1.7.32 in the shaded jar.
[INFO] Including org.slf4j:slf4j-simple:jar:1.7.32 in the shaded jar.
[INFO] Replacing ~/example.rabbitmq/target/PostQueue.jar with ~/example.rabbitmq/target/example.rabbitmq-1.0-SNAPSHOT-shaded.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
これで、MQを送信する PostQueue.jarと受信する ReceiveQueue.jarが一気に出来上がりました!
参考
maven-shade-plugin : https://maven.apache.org/plugins/maven-shade-plugin/