Maven基于属性只在两个插件中执行一个插件

时间:2016-03-02 16:00:06

标签: pom.xml maven-plugin

我使用两个maven插件,其中我只想执行一个,具体取决于作为参数传递的属性。

<properties>
  <global>false</global>
</properties>

<build>
  <plugins>
    <plugin>
      <groupId>..</groupId>
      <artifactId>plugin1-runs-globally</artifactId>
      <version>..</version>
      <configuration>
        <skip>!${global}</skip>
      </configuration>
      <executions>..</executions>
    </plugin>

    <plugin>
      <groupId>..</groupId>
      <artifactId>plugin2-runs-locally</artifactId>
      <version>..</version>
      <configuration>
        <skip>${global}</skip>
      </configuration>
      <executions>..</executions>
    </plugin>
  </plugins>
</build>
  

mvn clean install -Dglobal = true

应该只运行plugin1而不是plugin2而

  

mvn clean install

应该只运行plugin2而不是plugin1。

但是!$(全球)似乎在语法上是错误的。有人可以帮我解决一下吗?

1 个答案:

答案 0 :(得分:1)

据我所知,你不能使用任何布尔类型属性,但我建议你使用配置文件。

您可以做的是创建两个配置文件:

<profiles> <profile> <id>non-global</id> <activation> <activeByDefault>true</activeByDefault> </activation> <build> <plugins> <plugin> <groupId>..</groupId> <artifactId>plugin1-runs-locally</artifactId> <version>..</version> </plugin> </plugins> </build> </profile> </profiles>

当未指定任何内容时(如此指定),将使用此配置文件。

对于全局插件,您可以拥有一个由maven个人资料ID激活的个人资料。如果您愿意,还可以使用属性激活配置文件。例如,请参阅以下配置。

<profiles> <profile> <id>global</id> <!-- optional --> <activation> <property> <name>global</name> </property> </activation> <!-- optional --> <build> <plugins> <plugin> <groupId>..</groupId> <artifactId>plugin2-runs-locally</artifactId> <version>..</version> </plugin> </plugins> </build> </profile> </profiles>

现在,当您想要执行与全局配置文件相关的插件时,您需要做的就是:

  

mvn clean install -Pglobal

或使用财产时:

  

mvn clean install -Dglobal

如果您想要执行非全局插件,可以使用

  

mvn clean install

有关更多背景信息,请参阅maven配置文档。

http://maven.apache.org/guides/introduction/introduction-to-profiles.html