Maven 插件什么时候使用当前目录中的 POM?

When does a Maven plugin uses the POM in the current directory?

我使用版本 Maven 插件来检查我的依赖项的更新。因此,我将以下行添加到我的 pom.xml:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>versions-maven-plugin</artifactId>
    <version>${versions-plugin.version}</version>
    <configuration>
        <rulesUri>classpath:///rules.xml</rulesUri>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>versionrules</groupId>
            <artifactId>versionrules</artifactId>
            <version>1-SNAPSHOT</version>
        </dependency>
    </dependencies>
</plugin>

但是,如果我 运行 来自与 pom.xml 相同目录中的命令行的版本 Maven 插件,则不会使用此配置。使用我自己的配置的唯一方法是将此插件配置放在一个配置文件中,并在 Maven 运行.

期间执行此配置文件

有没有办法在命令行上 运行 版本插件并通过 pom.xml 配置它?我确信我的问题不仅适用于 Versions 插件,也适用于任何 Maven 插件。

这可以通过在执行定义中使用执行 ID default-cli 来完成配置将在命令行执行期间使用(使用当前配置)此外,因为 Maven 3.3.1 您可以使用像这样的东西:

mvn version:set@second-cli

这意味着您可以在 pom 文件中对命令行进行不同的配置:

只需简单地用不同的 id 将它们分开

 <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <version>2.5.</version>
        <executions>
          <execution>
            <id>default-cli</id>
            <configuration>
              ...
            </configuration>
          </execution>
          <execution>
            <id>second-cli</id>
            <configuration>
               ....
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins> 
  </build>

所以这意味着您可以通过给定 id 在命令行上对 运行 进行不同的配置。