我正在 Eclipse 中处理 Java 多模块项目。我必须将 Checkstyle 配置为我的 Maven 构建,并在出现任何违规情况时使构建失败。 我在这个网站上找到了使用本教程的建议:https://maven.apache.org/plugins/maven-checkstyle-plugin/examples/multi-module-config.html我决定遵循它.
我用我的 checkstyle.xml 添加了新的子文件夹 build-tools 并在项目的 pom.xml
中进行了所有更改主pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ss.ita</groupId>
<artifactId>jresume</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<name>JResume</name>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.16</version>
<dependencies>
<dependency>
<groupId>com.softserveinc.ita</groupId>
<artifactId>build-tools</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.16</version>
<configuration>
<configLocation>build-tools/src/main/resources/jresume/checkstyle.xml</configLocation>
<headerLocation>build-tools/src/main/resources/jresume/LICENSE.txt</headerLocation>
<failsOnError>true</failsOnError>
</configuration>
</plugin>
</plugins>
</reporting>
<modules>
<module>common</module>
<module>persistence</module>
<module>business</module>
<module>logging</module>
<module>web</module>
<module>build-tools</module>
</modules>
</project>
当我编写一些带有 checkstyle 违规的 java 代码时 Maven install 给了我成功,但由于违规,我不得不使项目失败。我哪里出错了?也许我写了错误的 checkstyle.xml 路径?请帮助我。
将配置更改为:
<configLocation>jresume/checkstyle.xml</configLocation>
<headerLocation>jresume/LICENSE.txt</headerLocation>
这些参数与您的源文件夹相关。
如果你查看
com.softserveinc.ita:build-tools:1.0
的jar文件,你会发现没有src/main/resources
。
此外,您应该安装/部署
com.softserveinc.ita:build-tools:1.0
如果您的工作区中有项目,Eclipse 通常会为您解决此问题,但我不确定此机制是否适用于 plugins 的依赖项。
此外,听起来好像您想在
<build>
生命周期(而不是 <reporting>
生命周期(站点))期间使构建失败。查看 https://maven.apache.org/plugins/maven-checkstyle-plugin/usage.html 的最后一部分
我在多模块项目中遇到了类似的问题,我完全按照 https://maven.apache.org/plugins/maven-checkstyle-plugin/examples/multi-module-config.html 的指南进行操作,但没有任何成功了。
简而言之,我也解决了在子模块中声明插件的问题。所以你应该在子模块 pom 中声明以下内容:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
</plugin>
</plugins>
</build>
在你的父pom中主要配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.4.0</version>
<configuration>
<configLocation>./checkstyle/checkstyle.xml</configLocation>
<consoleOutput>true</consoleOutput>
<excludeGeneratedSources>true</excludeGeneratedSources>
<failsOnError>true</failsOnError>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<linkXRef>false</linkXRef>
<outputFile>${project.build.directory}/checkstyle-result.xml</outputFile>
<propertiesLocation>./checkstyle/checkstyle.properties</propertiesLocation>
<suppressionsLocation>./checkstyle/checkstyle-suppression.xml</suppressionsLocation>
</configuration>
<executions>
<execution>
<id>validate</id>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
这样,当您执行 mvn clean install 时,将采用主 pom 中的配置并检查所有子模块