如何使用Maven的聚集和继承来收集子模块罐子为母公司的压缩包
我有以下结构的多模块Maven项目:如何使用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
目录。
这个目标是实现:
- 根
pom.xml
列表模块A,B,和C - 模块C
pom.xml
列表模块C-1和C-2,并声明共享依赖性;它还声明包装为“pom” maven-assembly-plugin
在模块C中用于查找其子目录target
中的所有*.jar
文件并将它们打包到tgz中。
我在这个实现中遇到了一些问题。简单的一个是C-1和C-2的自我依赖 - 它们从C继承了它自己的依赖,因此拒绝编译。我在C中使用dependencyManagement
来解决这个包装依赖问题。看起来它工作正常。
我也对Assembly插件有问题。当在文件集值中使用通配符时,它会保留结果tar文件夹中的目录结构,看起来你无法做任何事情。因此,具有模块C的bin.xml
<fileSet> <directory>${project.basedir}</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>**/*.jar</include>
</includes>
<excludes>
<exclude>**/*-javadoc.jar</exclude>
</excludes>
</fileSet>
结果按照压缩包了一种具有结构
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
欧凯,这不是太重要。主要问题是反应堆建造顺序。无论我做什么它导致
- 模块A
- 模块B
- 模块C
- 模块C-1
- 模块C-2
这是因为构建失败在模块C上抱怨
创建程序集失败:创建程序集归档bin时出错:您必须至少设置一个文件。 - > [Help 1]
我的理解是,问题出现在反应堆构建顺序 - C-1和C-2应该在C之前构建 - 但我无法得到如何管理它有C父母给他们,并保持在模块结构的顶部。
回答:
如果你需要有一个像包一样的发行包(例如zip),你必须定义一个包含它的配置的独立模块。 此外,您需要将每个您想要打包的模块定义为依赖项,以确保构建顺序由maven正确完成。
你必须使用看起来像this:
<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>
项目的结构看起来更或类似this:
+- pom.xml +-- mod1
+-- mod2
+-- dist
更新的Maven的组装插件描述:
如果您只需要你可以作为组件描述符的模块来代替:
<moduleSets> <moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<binaries>
<outputDirectory>modules</outputDirectory>
<unpack>false</unpack>
</binaries>
</moduleSet>
</moduleSets>
以上是 如何使用Maven的聚集和继承来收集子模块罐子为母公司的压缩包 的全部内容, 来源链接: utcz.com/qa/259839.html