2009-02-12 93 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> 
相关问题