2016-03-02 63 views
0

我使用兩個maven插件,其中我只想執行一個,這取決於作爲參數傳遞的屬性。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全新安裝-Dglobal =真

應該只運行plugin1而不是plugin2而

MVN全新安裝

應該只運行plugin2和不是plugin1。

但!$(全局)似乎在語義上是錯誤的。有人可以幫我解決問題嗎?

回答

0

據我所知,你不能使用任何布爾類型的屬性,但我建議你使用這個配置文件。

你可以做的是創建兩個配置文件:當指定什麼(所以總是)

<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全新安裝-Pglobal

或使用時物業:

mvn clean install -Dglobal

如果你想在非全局插件來執行,你可以使用

MVN全新安裝

參見更多背景信息maven的配置文件文檔。

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

+0

那麼你的意思是在一次只有一個配置文件將工作?此外,我有第三個插件需要執行兩個配置文件。那麼,我是否需要分別在兩個配置文件中包含? – lazyvab

+0

您可以同時使用這兩個配置文件。運行maven命令時,您可以使用逗號分隔的配置文件列表。如果你有一個需要在兩個配置文件中執行的插件,你可以把它放在普通的構建部分(所以不在其中一個配置文件中)。如果您對每個配置文件的同一插件有特定要求,則需要在兩個配置文件中定義插件。 – Jeroen