Maven シェード プラグインと Maven アセンブリ プラグインを使用して、Maven マルチモジュール ビルドからアセンブリをビルドしようとしています。私が必要とするのは、そのような構造です:
assembly.zip
------------- dllDir
-----------------一部の dll はサブモジュールに配置されています
--------- ---- .netDir
----- .net lib (va ikvm) としての完全な jar (すべてのモジュール jar で構成される)
--------- ---- fulljarDir
----------------- Java フル jar (すべてのモジュール jar で構成される)
----------------- Java API jar (一部のクラスのみ)
----------------- full-jar ソース
----------------- api-jar sources
------------- libs
-----------------すべてのサブモジュール ライブラリ ("normal"-jar、sources-jar、jar-依存関係あり)
-------------extlibDir
-----------------一部のサブモジュール ディレクトリにあるその他の jar/
dll
------------- docDir
---- -------------一部のドキュメント (アセンブリ プロジェクト自体からコピー)
現在、アセンブリ プロジェクトでシェード プラグインを使用して、full-jarとapi-jar (すべてのモジュールはアセンブリ プロジェクトの依存関係として記述されています) とそのソースを作成しています。
アセンブリ プラグイン (およびアセンブリ記述子) を使用して、モジュールから jar と dll を収集します。
<moduleSets>
<moduleSet>
<includeSubModules>false</includeSubModules>
<sources>
<outputDirectoryMapping>libs/${module.basedir.name}
</outputDirectoryMapping>
<excludeSubModuleDirectories>
true
</excludeSubModuleDirectories>
<fileSets>
<fileSet>
<directory>/target/</directory>
<includes>
<include>*dependencies.jar</include>
<include>*javadoc.jar</include>
<include>*sources.jar</include>
</includes>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>/native/usblibs.Linux/Release/</directory>
<includes>
<include>*.so</include>
</includes>
<outputDirectory>../../dllDir</outputDirectory>
</fileSet>
<fileSet>
<directory>/native/usb.Linux/lib/libusb-1.0/</directory>
<includes>
<include>*.so</include>
</includes>
<outputDirectory>../../usb</outputDirectory>
</fileSet>
<fileSet>
<directory>/native/usb.Linux/lib/usblib/i386/
</directory>
<includes>
<include>*.so</include>
</includes>
<outputDirectory>../../usb</outputDirectory>
</fileSet>
</fileSets>
</sources>
</moduleSet>
</moduleSets>
問題は、(すべてのモジュールの) fat jar をコンパイルするために shade プラグインを使用していることです。しかし、私はモジュールも使用しているため、パッケージ化する必要がありpom
、それが動作につながり、shade プラグインが jar の代わりに (ソースを含む) pom を作成します。シェードでタグを使用すると、<finalName>
アーティファクト全体の名前を jar に変更できますが、生成されたソースの名前は変更されません。
ヒントやコツはありますか?そのようなアセンブリを作成するためのより良い方法があるでしょうか?
ベスト、ヤン