[英]How can I configure Checkstyle in Maven?
我正在使用 Maven。
我有一个父模块和一些其他模块。
它们看起来像这样:
PARENT
├── pom.xml
├── ModulA
| └── pom.xml
└── ModulB
├── pom.xml
└── folder
└── checkstyle.xml
我试图用我自己的规则替换规则。 但它无视我的规则。 我在父pom.xml中添加了插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.9.1</version>
<configuration>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<configLocation>
${basedir}/../ModulB/folder/checkstyle.xml
</configLocation>
</configuration>
</plugin>
问题出在哪儿?
mvn checkstyle:checkstyle -X
:
...
<configuration>
<cacheFile default-value="${project.build.directory}/checkstyle-cachefile"/>
<configLocation default-value="config/sun_checks.xml">${checkstyle.config.location}</configLocation>
<consoleOutput default-value="false"/>
<enableFilesSummary default-value="true">${checkstyle.enable.files.summary}</enableFilesSummary>
<enableRSS default-value="true">${checkstyle.enable.rss}</enableRSS>
<enableRulesSummary default-value="true">${checkstyle.enable.rules.summary}</enableRulesSummary>
<enableSeveritySummary default-value="true">${checkstyle.enable.severity.summary}</enableSeveritySummary>
<encoding default-value="${project.build.sourceEncoding}">${encoding}</encoding>
<excludes>${checkstyle.excludes}</excludes>
<failsOnError default-value="false"/>
<format default-value="sun"/>
<headerFile>${basedir}/LICENSE.txt</headerFile>
<headerLocation default-value="LICENSE.txt">${checkstyle.header.file}</headerLocation>
<includeTestSourceDirectory default-value="${false}"/>
<includes default-value="**/*.java">${checkstyle.includes}</includes>
<linkXRef default-value="true">${linkXRef}</linkXRef>
<outputDirectory default-value="${project.reporting.outputDirectory}"/>
<outputFile default-value="${project.build.directory}/checkstyle-result.xml">${checkstyle.output.file}</outputFile>
<outputFileFormat default-value="xml">${checkstyle.output.format}</outputFileFormat>
<project default-value="${project}"/>
<propertiesLocation>${checkstyle.properties.location}</propertiesLocation>
<skip default-value="false">${checkstyle.skip}</skip>
<sourceDirectory default-value="${project.build.sourceDirectory}"/>
<suppressionsFileExpression default-value="checkstyle.suppressions.file">${checkstyle.suppression.expression}</suppressionsFileExpression>
<suppressionsLocation>${checkstyle.suppressions.location}</suppressionsLocation>
<testSourceDirectory default-value="${project.build.testSourceDirectory}"/>
<xrefLocation default-value="${project.reporting.outputDirectory}/xref"/>
</configuration>
...
为了让它获取您的自定义配置,您需要将您的文件声明为一个属性:
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
...
<properties>
<checkstyle.config.location><!-- file location --></checkstyle.config.location>
</properties>
<build>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.9.1</version>
</plugin>
</plugins>
</build>
</project>
取自我关于如何在此处创建自定义 CheckStyle 检查的教程:
http://blog.blundellapps.com/create-your-own-checkstyle-check/
源代码在这里:
https://github.com/blundell/CreateYourOwnCheckStyleCheck
为什么你不把你的 checkstyle 配置放在像src/main/resources
这样的父项目的目录中,并像这样在父 pom.xml 中参数化插件
<!-- Checkstyle -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>RELEASE</version>
<configuration>
<configLocation>src/main/resources/checkstyle.xml</configLocation>
</configuration>
</plugin>
子项目应该有权访问执行此配置
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.