Maven程序集插件:先决条件,但不绑定
我知道我可以将汇编插件绑定到项目的“包”阶段,但我想要一些不同的东西:Maven程序集插件:先决条件,但不绑定,maven,Maven,我知道我可以将汇编插件绑定到项目的“包”阶段,但我想要一些不同的东西: 当我运行mvn包时,它将在没有汇编的情况下执行 当我运行mvn assembly:single时,它将首先执行包阶段 我知道我可以手动执行mvn-package-assembly:single,但这是冗长且容易出错的:如果我编辑代码并忘记将“package”放入mvn-assembly:single,这将在程序集中生成旧版本的代码,无需编译更改的代码。从CLI运行mvn package assembly:single时,
- 当我运行
时,它将在没有汇编的情况下执行mvn包
- 当我运行
时,它将首先执行mvn assembly:single
阶段李>包
我知道我可以手动执行
mvn-package-assembly:single
,但这是冗长且容易出错的:如果我编辑代码并忘记将“package”放入mvn-assembly:single
,这将在程序集中生成旧版本的代码,无需编译更改的代码。从CLI运行mvn package assembly:single时,必须(参见更新)为目标提供所需的属性,这解释了为什么您会说目标容易出错
但是,如果您在“构建插件”部分的pom中添加以下插件定义:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>default-cli</id>
<phase>never</phase> <!-- or undefined -->
<goals>
<goal>single</goal>
</goals>
<configuration>
...
</configuration>
</execution>
</executions>
</plugin>
命令mvn assembly:single
相当于命令mvn assembly:single-Ddescriptor=path/to/descriptor
。运行时,它输出到控制台:
[INFO] --- maven-assembly-plugin:2.4:single (default-cli) @ fm-js ---
如果您想从命令行和在具有不同配置的某个阶段使用插件,那么第一个定义很有用
至于你的问题,正如你所问的,IMHO,不重新编程插件是不可能的。我的建议分别以不可移植或可移植的形式提出:
- 将命令
包装在shell脚本中mvn包程序集:single
- 一个调用命令
mvn package assembly:single
子句是不必要的。我还编辑了这个问题,以澄清“容易出错”的第1部分。同意。AFAIK命令mvn assembly:single无法在不重新编程插件的情况下触发任何阶段。因此,这几乎是不可能的。谢谢你的提醒
[INFO] --- maven-assembly-plugin:2.4:single (default-cli) @ fm-js ---