我有一个具有以下结构的多模块maven项目:
root module
module A
module B
module C
module C-1
module C-2模块C是本项目中的新模块。它的目标是为子模块C-1和C-2定义共享依赖关系(即它们是父模块),并定义模块C-1和C-2在模块的C target目录中构建成单个tar球的聚合 jars。
实现这一目标的途径是:
pom.xml列出模块A、B和Cpom.xml列出模块C-1和C-2并声明共享依赖;它还声明打包为"pom“maven-assembly-plugin查找它的子target目录中的所有*.jar文件,并将它们打包到tgz中。在这个实现中,我面临着几个问题。简单的一个是C-1和C-2的自我依赖--它们从C继承依赖到自身,因此拒绝编译。我在C中解决了将依赖项封装到dependencyManagement中的问题,因此它看起来很有效。
我也仍然有装配插件的问题。当在文件集值中使用通配符时,它会在生成的tar球中保留目录结构,看起来您什么也做不了。因此,在C模块的bin.xml中具有以下功能
<fileSet>
<directory>${project.basedir}</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>**/*.jar</include>
</includes>
<excludes>
<exclude>**/*-javadoc.jar</exclude>
</excludes>
</fileSet>tarball具有结构的结果
moduleC-version/moduleC-1/target/moduleC-1-version.jar
moduleC-version/moduleC-2/target/moduleC-2-version.jar当我需要
moduleC-version/moduleC-1-version.jar
moduleC-version/moduleC-2-version.jar好吧,这不太重要。主要问题是反应堆的建造顺序。不管我做什么都会导致
这是一个失败,因为构建在模块C上的抱怨
创建程序集失败:创建程序集存档bin时出错:必须至少设置一个文件。->帮助1
我的理解是,问题在于反应堆的建造顺序-- C-1和C-2应该在C之前构建--但是我无法理解如何管理它,让C作为他们的父级,并保持在模块结构的顶部。
发布于 2017-12-04 07:26:19
如果您需要像package这样的发行版(例如zip),您必须定义一个单独的模块,其中包含它的配置。此外,您需要定义希望打包成依赖关系的每个模块,以确保maven正确地完成构建顺序。
您必须使用的maven程序集插件描述符看起来类似于这是:。
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>dist-assembly</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<useProjectArtifact>false</useProjectArtifact>
<unpack>false</unpack>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
</assembly>这些项目的结构看起来更像或更像这是:
+- pom.xml
+-- mod1
+-- mod2
+-- dist更新:
如果只需要模块,则可以将其用作组装描述符:
<moduleSets>
<moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<binaries>
<outputDirectory>modules</outputDirectory>
<unpack>false</unpack>
</binaries>
</moduleSet>
</moduleSets>https://stackoverflow.com/questions/47616118
复制相似问题