4

我希望Maven在命令行中有一個標誌時才運行某個插件,當我調用mvn命令時。Maven:只有在命令行標誌存在時執行插件

例如:

比方說,我有一個名爲maven-foo-plugin插件。我只需要Maven在我調用maven命令時存在標誌--foo時運行此插件。

所以,不是說...

mvn install 

...我想說...

mvn install --foo 

第一個不應使用/調用插件maven-foo-plugin,但第二應該。默認情況下,我不希望此插件運行,但當且僅當--foo存在時。是否還有另外一個參數,我將其添加到maven-foo-plugin以使其執行此操作?

我使用的插件是maven-antrun-plugin,它具有解壓縮文件的任務。當然,有時這個文件存在,有時不存在。有時候,它不存在,我不需要它。所以,我需要一種方法(最好通過命令行,除非有人有更好的主意)來打開/關閉這個插件。

回答

4

正如@Gab所提到的,使用Maven配置文件是要走的路。創建一個配置文件並在配置文件中配置您的插件。然後在輪廓的activation部分,引用環境變量,使用或不使用值:

<profiles> 
    <profile> 
    <activation> 
     <property> 
     <name>debug</name> 
     </property> 
    </activation> 
    ... 
    </profile> 
</profiles> 

上面的例子將啓動配置文件,如果你定義debug變量調用Maven的時候:

mvn install -Ddebug 

請請注意,您必須在-D前加上環境變量,以便將它們傳遞給運行Maven的JVM。

更多細節可以在這裏找到:http://maven.apache.org/guides/introduction/introduction-to-profiles.html

+0

在該配置文件,你可以運行兩個插件?一個接一個地? – 2013-03-20 14:03:00

+0

是的,您可以在配置文件中擁有儘可能多的插件。每個配置文件都有一個'build/plugins'部分,您可以在其中列出插件,就像您在主構建中所做的那樣。 – nwinkler 2013-03-20 14:04:59

+0

如果我在一個配置文件中有兩個插件,我該如何說哪一個先運行? – 2013-03-20 16:56:15

5

在maven中觸發條件操作的正確方法是使用配置文件。 可以如此配置特定的個人資料,包括插件激活,那麼你將使用

mvn targetPhase -P myprofile

(你也可以指定一個特定的屬性值啓動的情景)

看到Maven: Using a Plugin Based On Profile

觸發執行