1

我正在尝试使用 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 插件来创建完整的 jarapi-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,但不会重命名生成的源。

有什么提示或技巧吗?也许有更好的方法来生产这样的组件?

最好的,一月

4

0 回答 0