我正在尝试使用 maven shade 插件和 maven 程序集插件从我的 maven 多模块构建中构建程序集。我需要的是这样的结构:
assembly.zip
------------- dllDir
-----一些 dll 位于子模块
--------- ---- .netDir
-----------------完整的 jar(由所有模块 jar 组成)作为 .net lib (va ikvm)
--------- ---- fulljarDir
----------------- java full jar(由所有模块jar组成)
----------------- java api jar(仅某些类)
----------------- full-jar 源
----------------- api-jar来源
-------------库
-----所有子模块库(“正常”-jar、sources-jar、jar-有依赖)
-------------extlibDir
-----------------位于某些子模块目录中的其他一些 jars/dll
------------- docDir
---- -------------一些文档(从组装项目本身复制)
目前,我正在使用程序集项目中的 shade 插件来创建完整的 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>
现在的问题是我正在使用 shade 插件来编译 fat jar(所有模块的)。但我也在使用模块,所以需要打包pom
,这会导致这种情况,即阴影插件创建 pom(其中包含源代码)而不是 jar。如果我<finalName>
在阴影中使用标签,我可以将完整的工件重命名为 jar,但不会重命名生成的源。
有什么提示或技巧吗?也许有更好的方法来生产这样的组件?
最好的,一月