只在子POM上执行maven assembly插件

4
我有一个带有父POM和三个子项目的项目。我想仅在一个子POM上执行目标assembly:assembly。我已经阅读了以下帖子,但我无法使用maven assembly插件使其工作。 在子模块上执行Maven插件目标,而不是在父级上
如果我运行
mvn -DskipTests=true assembly:assembly

我遇到了以下错误:
[ERROR]执行目标org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:assembly(default-cli)时失败,项目inhouse:读取组件时出错:找不到组件描述符。 -> [Help 1]
似乎它总是解析插件配置并查找组件描述符,即使我根本没有将插件放在父POM中。有人能提供一个组件插件的解决方案吗?

请注意,assembly:assembly已经弃用。请改用assembly:single。此外,最新的汇编插件版本为2.4,有时版本升级包含可能有所帮助的错误修复。 - user944849
3个回答

11

正确的选项是:<skipAssembly>true</skipAssembly>,以跳过父项目。


2

您可以在父POM中定义属性。

<assembly.skipAssembly>true</assembly.skipAssembly>

在你的模块pom属性中覆盖这个属性

<assembly.skipAssembly>false</assembly.skipAssembly>

-5

您可以在聚合pom.xml中配置汇编插件以跳过执行。

<build><plugins>部分中

<configuration><skip>true</skip></configuration>

我在我的父POM中有这个,但仍然出现错误“找不到组装描述符。”: <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <skip>true</skip> </configuration> <executions> <execution> <id>assembly</id> <phase>package</phase> </execution> </executions> </plugin> - markus
汇编文件在哪里?如果您正在使用属性替换引用它,那么它可能位于错误的位置。如果您发布多模块项目的结构和汇编的位置,我可能可以为您解决问题。 - ngreen
1
好的答案是这个 <skipAssembly>true</skipAssembly> - ppeterka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接