无法在Maven多模块项目中配置Checkstyle

问题描述 投票:0回答:2

我正在 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 路径?请帮助我。

java xml eclipse maven checkstyle
2个回答
0
投票

将配置更改为:

    <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

的最后一部分

0
投票

我在多模块项目中遇到了类似的问题,我完全按照 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 中的配置并检查所有子模块

© www.soinside.com 2019 - 2024. All rights reserved.