Maven 2插件,build + surefire

时间:2009-02-12 10:09:53

标签: maven-2 maven-plugin surefire

如果我在< build>中定义一个插件标签,并希望在我的网站命令中使用它我该怎么做?我是否必须在< reporting>中定义插件?再次标记?

我在构建代码中可能已完成的配置如何以及想要在报告代码中进行的配置如何? (我不想仅仅为了在2个生命周期中使用插件而将配置文件的位置指定两次)

例如:我在构建代码中定义了checkstyle插件,并为要使用的规则配置了自定义位置。我这样做是因为规则被打包在一个jar中,所以我可以将它定义为依赖。如果我在报告标记中执行此操作,则无法执行此操作。但我需要在报告标签中使用此插件,因此surfire可以为checkstyle生成报告。所以我必须在报告标签中定义插件。

也许我在这里做了一些完全错误的事情,但我不知道除了那之后我怎么能做到这一点。我不喜欢的是我在我的pom中有两个插件(在构建标记和报告标记中)。

我希望有人可以验证我的解决方案是否正常,或者告诉我如何做得更好。

THX

裤裤

2 个答案:

答案 0 :(得分: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>

在该特定模块中。您可以选择是否要重新配置从父定义继承的默认参数。

我认为这就是你要找的东西?

答案 1 :(得分: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>

Child Pom:

<plugins>
    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
    </plugin>
</plugins>