Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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_Plugins_Maven 2_Pom.xml - Fatal编程技术网

在Maven插件中,当我有多个特定目标的配置时,如何使用特定配置运行特定目标

在Maven插件中,当我有多个特定目标的配置时,如何使用特定配置运行特定目标,maven,plugins,maven-2,pom.xml,Maven,Plugins,Maven 2,Pom.xml,请参阅下面pom.xml中的插件配置 我可以做到: mvn myplugin:myGoal 它运行我的目标(我想两个执行),但我希望能够独立选择第一个或第二个执行 我知道我可以向execution元素添加一个id,但是如何在命令行中引用该id呢。我想谈谈这个想象中的命令的作用: mvn-myplugin:myGoal--executionId=1 这是可能的,还是我走错了方向 <plugin> <groupId>org.myplug

请参阅下面pom.xml中的插件配置

我可以做到:

mvn myplugin:myGoal

它运行我的目标(我想两个执行),但我希望能够独立选择第一个或第二个执行

我知道我可以向execution元素添加一个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>

org.myplugin
myplugin maven插件
1.1.1
加工猫
我的目标
猫
过程狗
我的目标
狗

假设你打电话

  mvn myplugin:myGoal
但问题是,您将收到一条错误消息,因为执行没有唯一的id(在本例中,两者都具有相同的id)

您可以通过mvn-PXYZ和mvn-PABC激活的配置文件来实现您想要做的事情

我可以执行运行myGoal的mvn myplugin:myGoal(我想这两种执行都可以)

它们都没有(假设它们具有唯一的
id
)。执行绑定到一个阶段,您需要运行给定的阶段来触发它们

我知道我可以向execution元素添加一个id,但是如何在命令行中引用该id呢

不支持。在CLI上调用的插件可以使用特殊的
默认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>



  • Maven 3.3.1现在支持从CLI执行多个目标+

    mvn exec:java@first-cli
    mvn exec:java@second-cli
    
    其中第一个cli/第二个cli是执行ID

    对于您的示例,命令如下

    mvn myplugin:mygoal@process-cats
    mvn myplugin:mygoal@process-dogs
    

    嘿,你可以这样创建你的目标:-

    org.myplugin:myplugin-maven-plugin:1.1.1:myGoal  i.e
    <groupId>:<artifactId>:<version>:<yourgoal>
    
    org.myplugin:myplugin-maven-plugin:1.1.1:myGoal即
    :::
    

    这对我来说很有效…

    你介意接受吗?先前接受的答案不再有效。同意,接受的答案“不,不可能”不正确。您可以使用mvn插件:goal@an_id现在。。所以,如果你有一个身份证,它会工作的。是的。如果您在多模块项目中,那么不要忘记添加-pl my module链接已失效。修复了链接!(现在https)