Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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
Maven程序集插件:先决条件,但不绑定_Maven - Fatal编程技术网

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,不重新编程插件是不可能的。我的建议分别以不可移植或可移植的形式提出:

  • 将命令
    mvn包程序集:single
    包装在shell脚本中
  • 一个调用命令
    mvn package assembly:single

1。为什么不说我的要求在Maven中是不可能的,我必须指定这两个参数?2.
子句是不必要的。我还编辑了这个问题,以澄清“容易出错”的第1部分。同意。AFAIK命令mvn assembly:single无法在不重新编程插件的情况下触发任何阶段。因此,这几乎是不可能的。谢谢你的提醒
[INFO] --- maven-assembly-plugin:2.4:single (default-cli) @ fm-js ---