当我有多个用于该目标的配置时,如何在 Maven 插件中使用特定配置运行特定目标
Posted
技术标签:
【中文标题】当我有多个用于该目标的配置时,如何在 Maven 插件中使用特定配置运行特定目标【英文标题】:How do I run a specific goal with a particular configuration in a Maven plugin when I have several configurations for that goal 【发布时间】:2011-03-27 19:01:53 【问题描述】:请参阅下面 pom.xml 中的插件配置。
我能做到:
mvn myplugin:myGoal
哪个运行 myGoal(我想是两次执行),但我希望能够独立选择第一次或第二次执行。
我知道我可以向执行元素添加一个 id,但我如何在命令行上引用该 id。我想得到一些可以完成这个想象中的命令所做的事情:
mvn myplugin:myGoal --executionId=1
这可能吗,还是我走错了路?
<plugin>
<groupId>org.myplugin</groupId>
<artifactId>myplugin-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<id>process-cats</id>
<goals>
<goal>myGoal</goal>
</goals>
<configuration>
<myParam>cats</myParam>
</configuration>
</execution>
<execution>
<id>process-dogs</id>
<goals>
<goal>myGoal</goal>
</goals>
<configuration>
<myParam>dogs</myParam>
</configuration>
</execution>
</executions>
</plugin>
【问题讨论】:
您介意接受***.com/a/33627949/318054 吗?之前接受的答案不再有效。 同意,接受的答案“不,不可能”是不正确的。你现在可以 mvn plugin:goal@an_id .. 所以如果你有一个Maven 3.3.1+ 现在支持从 CLI 执行多个目标
mvn exec:java@first-cli
mvn exec:java@second-cli
其中 first-cli/second-cli 是执行 ID。
https://blog.soebes.de/blog/2015/03/17/apache-maven-3-dot-3-1-features/
对于您的示例,命令将是
mvn myplugin:mygoal@process-cats
mvn myplugin:mygoal@process-dogs
【讨论】:
【参考方案2】:我可以做
mvn myplugin:myGoalWhich
运行 myGoal(我想都是执行)
没有一个(假设他们有唯一的id
)。执行被绑定到一个阶段,你需要运行给定的阶段来触发它们。
我知道我可以向执行元素添加一个 id,但我如何在命令行上引用该 id。
不支持。在 CLI 上调用的插件可以使用特殊的 default-cli
executionId
在 POM 中定义一个非全局配置,如下所示:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>default-cli</id>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
<descriptorRef>project</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
这可能吗,还是我走错了路?
不,不可能。在命令行上传递参数或使用配置文件(有或没有上述默认执行)。
参考文献
Default Plugin Execution IDs http://jira.codehaus.org/browse/MNG-3203 http://jira.codehaus.org/browse/MNG-3401【讨论】:
【参考方案3】:嘿,你可以像这样创建你的目标:-
org.myplugin:myplugin-maven-plugin:1.1.1:myGoal i.e
<groupId>:<artifactId>:<version>:<yourgoal>
它适用于我的情况......
【讨论】:
是的。如果您在多模块项目中,请不要忘记添加 -pl my-module【参考方案4】:如果你打电话,你所做的假设
mvn myplugin:myGoal
但问题是您会收到一条错误消息,因为执行没有唯一的 id(在这种情况下两者都相同)。
您可以通过配置文件实现您喜欢做的事情,您可以通过 mvn -PXYZ 和 mvn -PABC 激活这些配置文件
【讨论】:
以上是关于当我有多个用于该目标的配置时,如何在 Maven 插件中使用特定配置运行特定目标的主要内容,如果未能解决你的问题,请参考以下文章