您可以从 Maven 开始从命令行执行目标(及其执行)3.3.1 on and this https://issues.apache.org/jira/browse/MNG-5768新功能,通过@executionId
附加选项。
关于 Maven 和执行 ID 生成,您还可以检查这个问题 https://stackoverflow.com/questions/34590452/what-is-the-implicit-id-of-a-maven-plugin-execution.
在Maven之前3.3.1您可以将这两个执行绑定到一个通常不会造成损害的阶段(例如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 应该非常清楚地说明它将实际执行哪个插件和哪个目标(即配置文件的目的,像往常一样)。
Update
只是装饰性的,但您也可以添加到元素上方的配置文件构建中:
<defaultGoal>validate</defaultGoal>
这样您只需要运行以下 Maven 命令(仅配置文件激活):
mvn -PpluginGoalExecution
然后它会自动执行验证阶段和配置的插件执行。不是一个大的变化(正如我所说,装饰性的),但可能更接近于插件目标执行而不是 Maven 阶段调用(再次强调,只是外观)。