【发布时间】:2015-11-15 04:37:11
【问题描述】:
我有一个 maven 项目,我在 pom.xml 的构建和报告部分中使用了几个插件(pmd、checkstyle)。前者用于执行几个约束,后者用于站点报告。这些插件的调用大多共享共同的<configuration> 元素,到目前为止,我发现的唯一解决方案是复制相应的 XML 片段。有什么办法可以避免这种重复?
例如pom.xml片段:
<project ...>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${plugin.pmd.version}</version>
<configuration>
<targetJdk>${target.java.version}</targetJdk>
<rulesets>
<ruleset>${project.basedir}/codecheck/pmd-rules.xml</ruleset>
</rulesets>
<excludeRoots>
<excludeRoot>${project.basedir}/target/generated-sources/protobuf/java</excludeRoot>
</excludeRoots>
<failOnViolation>${failOnStyleError}</failOnViolation>
<verbose>true</verbose>
</configuration>
<executions>
<execution>
<id>pmd-check</id>
<phase>validate</phase>
<goals>
<goal>check</goal>
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
...
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${plugin.pmd.version}</version>
<configuration>
<targetJdk>${target.java.version}</targetJdk>
<rulesets>
<ruleset>${project.basedir}/codecheck/pmd-rules.xml</ruleset>
</rulesets>
<excludeRoots>
<excludeRoot>${project.basedir}/target/generated-sources/protobuf/java</excludeRoot>
</excludeRoots>
</configuration>
</plugin>
</plugins>
</reporting>
...
【问题讨论】:
-
你应该使用
<pluginManagement>.... -
@khmarbaise 我试过了,但这不起作用,至少对于 PMD 插件而言。
-
你使用哪个 maven 版本?
-
maven 版本是 3.3.3
标签: java maven maven-3 pom.xml pmd