Java Maven阴影插件
我正试图用maven shade插件和maven assembly插件从maven多模块构建中构建一个组件。我需要的是这样的结构: assembly.zip -------德尔迪尔 ---------某些dll位于子模块中 -------netDir先生 ---------由所有模块jar组成的完整jar,如.net lib va ikvm -------福加迪尔 ---------由所有模块jar组成的java完整jar ---------JavaAPI jar只支持一些类 ---------完整jar源 ---------api jar源 -------自由基 ---------所有子模块libs普通jar、源jar、带依赖项的jar -------extlibDir ---------位于某些子模块目录中的一些其他JAR/DLL -------多克迪尔 ---------某些文档是从部件项目本身复制的 目前,我正在组装项目中使用shade插件来创建完整的jar和api jar。所有模块都被描述为组装项目及其源代码的依赖项 我使用带有和汇编描述符的汇编插件从模块中收集jar和dll:Java Maven阴影插件,java,maven,maven-shade-plugin,Java,Maven,Maven Shade Plugin,我正试图用maven shade插件和maven assembly插件从maven多模块构建中构建一个组件。我需要的是这样的结构: assembly.zip -------德尔迪尔 ---------某些dll位于子模块中 -------netDir先生 ---------由所有模块jar组成的完整jar,如.net lib va ikvm -------福加迪尔 ---------由所有模块jar组成的java完整jar ---------JavaAPI jar只支持一些类 ---------
<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插件编译所有模块的胖jar。但是我也在使用模块,所以包装需要是pom,这导致了bevaviour,shade插件使用其中的源代码而不是jar创建pom。如果我在shade中使用标记,我可以将整个工件重命名为jar,但是生成的源代码不会重命名
有什么提示或技巧吗?也许有更好的方法来生产这样的组件
最好的,
Jan不清楚为什么如果使用模块,包装应该是pom?你指的是什么模块?装配但是它们与打包无关,如果我选择打包罐,我不能在pom的模块部分添加任何模块。我在pom中引用了项目的所有模块,以收集在构建过程中通过模块集从模块生成的dll。也许我走错了方向……非常感谢我在原始帖子中描述的构建组件的想法啊,好吧!您最好使用模块拆分父pom。现在,您想在一个模块中混合太多的内容。当你把它们分开的时候,你会感觉更好,因为你的两个模块会变得更简单,并且会做他们想要做的事情。好吧,你是对的,但是我已经有了一个单独的父pom,我只有组装pom中的模块,因为上面我的代码片段drom中的assemby描述器。我需要从模块中收集非JAR,除了使用模块集,我没有找到任何其他方法