Maven阴影插件

时间:2013-02-13 09:02:19

标签: java maven maven-shade-plugin

我正在尝试使用maven shade插件和maven组件插件从我的maven多模块构建中构建一个程序集。我需要的是这样的结构:

assembly.zip
------------- dllDir
----------------- 一些dll位于子模块中
------------- .netDir
----------------- 完整jar(由所有模块jar组成)为.net lib(va ikvm)
------------- fulljarDir
----------------- java full jar(包含所有模块jar)
----------------- java api jar(只有一些类)
----------------- 全罐来源
----------------- api-jar来源
------------- 图书馆
----------------- 所有子模块库(“普通”-jar,sources-jar,jar-with-dependencies)
------------- extlibDir
----------------- 其他一些位于某些子模块目录中的jar / dll
------------- docDir
----------------- 一些文档(从汇编项目本身复制)

目前我正在使用程序集项目中的shade插件创建 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>

现在的问题是我正在使用shade插件来编译fat jar(所有模块)。但我也在使用模块,所以包装需要pom,这导致了一个小问题,即树荫插件创建了pom(其中有源代码)而不是jar。如果我在阴影中使用<finalName>标记,我可以将完整的工件重命名为jar,但不会重命名生成的源。

任何提示或技巧?也许有更好的方法来制作这样的装配?

最佳,  扬

0 个答案:

没有答案