Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven阴影插件_Java_Maven_Maven Shade Plugin - Fatal编程技术网

Java Maven阴影插件

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只支持一些类 ---------

我正试图用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:

<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,除了使用模块集,我没有找到任何其他方法