Closed e15d5605 closed 2 years ago
maven-assembly-plugin
はGlycanBuilder2の実行可能jarファイルの生成に必要なプラグインであり、maven package
を実行した際に参照される。このコマンドを実行するとデフォルトで組み込まれているmaven-jar-plugin
とmaven-assembly-plugin
が参照され、ライブラリ用のjarとfat-jarを生成する。このコマンドはmvn deploy
を実行した際にも行われているためfat-jarも同時にデプロイされている。maven-assembly-plugin
にdeploy時は参照しない旨のプロパティがあるのかを調査したが、それらしい機能は提供されていなさそうであった。代替案として以下の運用方法を検討した。
mvn package
やmvn deploy
ではデフォルトで利用可能なmaven-jar-plugin
のみを利用する専用の変数
を追記して実行する専用の変数
としてfat-jar
を生成するための<profile>
を追加した。厳密には<build>
に組み込まれていたmaven-assembly-plugin
を移動しただけである。
<profile>
<id>make-fat-jar</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<finalName>glycanbuilder2</finalName>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>org.eurocarbdb.application.glycanbuilder.GlycanBuilder</mainClass>
</manifest>
<manifestEntries>
<Class-Path>../config/</Class-Path>
</manifestEntries>
</archive>
<attach>false</attach>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
また、fat-jarとは別にmaven-source-plugin
というプラグインも導入されている。これはeclipseで.project
ファイルを作成した際に、ライブラリに対してソースコードを添付するためのアーカイブファイルである。開発に必要不可欠なファイルではないが、参照しているライブラリのソースコードを見ることが可能になるため、問題の解決方法を模索する際に役立てられる。現在はmvn package
を実行するとjarファイルと一緒に生成されてしまうため、<profile>
として扱うことで必要な時に呼び出すようにした。
<profile>
<id>make-source-jar</id>
<build>
<plugins>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
これらの構成により以下の使い分けが可能になる。 | Command | 成果物 |
---|---|---|
mvn package | glycanbuilder2-1.17.1.jar | |
mvn -P make-fat-jar package | glycanbuilder2-1.17.1.jar glycanbuilder2-1.17.1-with-dependencies.jar |
|
mvn deploy | glycanbuilder2-1.17.1.jar | |
mvn -P make-source-jar deply | glycanbuilder2-1.17.1.jar glycanbuilder2-1.17.1-sources.jar |
v1.17.1〜より導入する
GlycanBuilder2は実行可能jarファイルを生成するために
maven-assembly-plugin
を導入している。\ そのため、mvn deploy
の実行時にfat-jarの生成も行われ、MavenRepositoryへデプロイされてしまっている。\ fat-jarは非常に大きなサイズのファイルであることや、ライブラリとしての参照に必要な形式でないためデプロイを避ける必要がある。