2009-02-12 91 views
3

如果我在<構建>標記中定義一個插件並希望在我的站點命令中使用它,我該怎麼做?我是否必須在<報告>標記中再次定義插件?Maven 2插件,構建+ surefire

那麼我可能已經在構建標記內完成的配置以及想要在報告標記處發生的配置如何? (我不想指定例如配置文件的位置兩次,只是在兩個生命週期中使用插件)

作爲示例:我在構建標記中定義了我的checkstyle插件並將規則的自定義位置配置爲用過的。我這樣做是因爲規則被打包在一個jar中,所以我可以將它定義爲依賴關係。這是不可能的,如果我在報告標籤中做到這一點。但我需要在報告標籤中使用此插件,因此surfire可以生成checkstyle報告。所以我必須在報告標籤中定義插件。

也許我在這裏做了一些完全錯誤的事情,但我沒有看到我能做到這點。我不喜歡的是,我在我的pom中有兩個插件(在構建標記和報告標記中)。

我希望有人可以驗證我的解決方案是好的,或給我一個建議如何做得更好。

THX

褲褲

回答

4

Maven插件在定義其通常結合到執行在給定的生命週期階段。插件本身指定了這是哪個生命週期階段,但是如果您有特殊需求,您可以更改它。

如果你有一個多模塊版本,你可以定義一組插件,包含在一個普通的父-Pom中需要的所有參數。這通常會針對版本中的每個子模塊執行。如果你不希望這樣的事情發生,你可以將其定義(在父POM)是這樣的:

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
      <skip>true</skip> 
     </configuration> 
    ... More plugin cofniguration stuff ... 
</plugin> 

如果在一個或多個嵌套moudules要啓用該插件,你可以說:

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
      <skip>false</skip> 
     </configuration> 
    ... Maybe Configuration .... 
</plugin> 

在該特定模塊中。您可以選擇是否要重新配置從父定義繼承的默認參數。

我想這就是你要找的?

+0

哦,我不知道。所以基本上我不需要將checkstyle和pmd插件添加到pom的報告標記中,因爲他們最喜歡的是受到網站生命週期的限制? – kukudas 2009-02-12 11:48:56

2

除了KRosenvold的回答,您還可以通過在<pluginManagment>節宣佈一個插件儘量減少配置,也許在你topmost pom in the inheritance chain,然後你就可以omit specifying the version of the plugin in all the other places you are declaring it's use

父POM:

<pluginManagement> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.2-beta-1</version> 
     </plugin> 
    </plugins> 
<pluginManagement> 

兒童雙響炮:

<plugins> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
    </plugin> 
</plugins> 
相關問題