gpt4 book ai didi

java - Maven:从命令行执行并在配置中多次执行

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:45 26 4
gpt4 key购买 nike

我想从命令行执行插件目标,但要执行插件的多次执行。为此,我的 POM 如下所示:

<plugin>
<groupId>xxx.yyy</groupId>
<artifactId>zzz</artifactId>
<version>1.1.6</version>
<executions>
<execution>
<id>default-cli-1</id>
<goals>
<goal>mygoal</goal>
</goals>
<configuration>
.... config1 ....
</configuration>
</execution>
<execution>
<id>default-cli-2</id>
<goals>
<goal>mygoal</goal>
</goals>
<configuration>
.... config2 ....
</configuration>
</execution>
</executions>
</plugin>

我想做的是:

mvn xxx.yyy.zzz:mygoal

然后这将执行两次执行。但我想不通。

我知道我不能使用 <id>从命令行执行时。那就是default-cli是为了。然而 <id><executions> 中必须是唯一的这意味着我只能把 default-cli在一个execution .

Maven 版本3.0.5

最佳答案

从 Maven 3.3.1this 开始,您可以从命令行执行目标(及其执行)新功能,通过 @executionId 附加选项。

关于Maven和execution ids的生成,你也可以查看this SO question .


在 Maven 3.3.1 之前,您可以改为将这两个执行绑定(bind)到一个通常不会造成伤害的阶段(如 validate),并具有如下内容:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>execution-1</id>
<phase>validate</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>something1</classifier>
</configuration>
</execution>
<execution>
<id>execution-2</id>
<phase>validate</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>something2</classifier>
</configuration>
</execution>
</executions>
</plugin>

然后执行:

mvn validate

作为无害阶段的一部分,您将有效地执行同一插件的同一目标的两次执行。

如果您不希望默认情况下将它们作为此阶段的一部分(可以理解),那么您可以将它们移动到一个配置文件中并将其激活为执行的一部分:

mvn validate -PpluginGoalExecution

为了完整起见,配置文件如下所示:

<profile>
<id>pluginExecution</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>execution1</id>
<phase>validate</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>something1</classifier>
</configuration>
</execution>
<execution>
<id>execution2</id>
<phase>validate</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>something2</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>

不言而喻:在这种情况下,配置文件的 id 应该非常清楚地说明它实际执行的是哪个插件和哪个目标(即,像往常一样,配置文件的目的)。

更新
只是装饰性的,但您也可以添加到元素上方的配置文件中:

<defaultGoal>validate</defaultGoal>

因此您只需要运行以下 Maven 命令(仅配置文件激活):

mvn -PpluginGoalExecution

然后它会自动执行验证阶段和配置的插件执行。变化不大(正如我所说,是表面上的),但可能更接近于插件目标执行而不是 Maven 阶段调用(同样,只是外观)。

关于java - Maven:从命令行执行并在配置中多次执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34902978/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com