我正在将Maven项目与现有的自定义Checkstyle规则集集成,将其编译为jar并在Nexus存储库中使用。 该规则集依赖于Checkstyle 5.0,并且与较新版本不兼容。

我在将Maven配置为使用我的规则使用此较旧的Checkstyle版本时遇到麻烦。

这是我的项目布局:

root/
  pom.xml
  buildsupport/
    pom.xml
    src/main/resources/checkstyle
      mycompany-coding-rules.xml
    src/main/java/com.mycompany.checkstyletest/
      CheckstyleViolator.java
  [other projects with pom.xml and java source...]

这是我的父pom.xml

<project>
...
<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.5</version>
            </plugin>
        </plugins>
    </pluginManagement>
<plugins>
    ...
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.0</version>
        <dependencies>
            <dependency>
                <groupId>com.mycompany</groupId>
                <artifactId>buildsupport</artifactId>
                <version>X.Y.Z</version>
            </dependency>
            <dependency>
                <groupId>checkstyle</groupId>
                <artifactId>checkstyle</artifactId>
                <version>5.0</version>
            </dependency>
            <dependency>
                <groupId>com.mycompany.checkstyle</groupId>
                <artifactId>mycompany-checkstyle</artifactId>
                <version>1.1</version>
            </dependency>
        </dependencies>
    </plugin>
</plugins>
</build>

<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <configLocation>checkstyle/mycompany-coding-rules.xml</configLocation>
                <packageNamesLocation>checkstyle_packages.xml</packageNamesLocation>
            </configuration>
        </plugin>
    </plugins>
</reporting>
...

如果我在<reporting><plugins><plugin>...<build><pluginManagement><plugins><plugin>的maven-checkstyle-plugin中省略了<version>2.5</version>并运行mvn site在根目录中,顶层项目失败:

...
[INFO] Generating "Checkstyle" report    --- maven-checkstyle-plugin:2.8
...
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.0:site (default-site) on project mytoplevel-project:
Error during page generation: Error rendering Maven report: Failed during checkstyle configuration:
cannot initialize module TreeWalker - TreeWalker is not allowed as a parent of com.mycompany.checkstyle.checks.coding.ImportOrderCheck -> [Help 1]

像上面的XML一样添加<version>2.5</version>可以使顶层项目成功,但是在第一个子项目中会看到相同的错误:

...
[INFO] Generating "Checkstyle" report    --- maven-checkstyle-plugin:2.5
...
[INFO] mytoplevel-project ................................ SUCCESS [4.528s]
[INFO] buildsupport ...................................... FAILURE [0.489s]
...
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.0:site (default-site) on project buildsupport:
Error during page generation: Error rendering Maven report: Failed during checkstyle configuration:
cannot initialize module TreeWalker - TreeWalker is not allowed as a parent of com.mycompany.checkstyle.checks.coding.ImportOrderCheck -> [Help 1]

我确定此错误是由于使用了最新版本的Checkstyle而不是5.0,因为我在将规则集用作针对Checkstyle 5.5的Eclipse插件时看到了相同的错误-已通过将Checkstyle插件版本回滚到5.0来解决。

我不明白的是子项目是如何选择错误的Checkstyle版本的。

===============>>#1 票数:0 已采纳

答:父pom.xml需要这些元素-

<project>
<build>
    <!-- http://maven.apache.org/guides/mini/guide-configuring-plugins.html -->
    <!-- doesn't seem to be necessary? -->
<!--
    <pluginManagement><plugins><plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>${checkstyle.plugin.version}</version>
    </plugin></plugins></pluginManagement>
-->

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.0</version>
        <configuration>
            <reportPlugins>
                <plugin>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <configuration>
                        <configLocation>checkstyle/mycompany-coding-rules.xml</configLocation>
                        <packageNamesLocation>checkstyle_packages.xml</packageNamesLocation>
                    </configuration>
                </plugin>
            </reportPlugins>
        </configuration>
    </plugin>

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>${checkstyle.plugin.version}</version>
        <dependencies>
            <dependency>
                <groupId>com.mycompany</groupId>
                <artifactId>buildsupport</artifactId>
                <version>X.Y.Z</version>
            </dependency>
            <dependency>
                <groupId>checkstyle</groupId>
                <artifactId>checkstyle</artifactId>
                <version>5.0</version>
            </dependency>
            <dependency>
                <groupId>com.mycompany.checkstyle</groupId>
                <artifactId>mycompany-checkstyle</artifactId>
                <version>1.1</version>
            </dependency>
        </dependencies>
    </plugin>
</build>

<!-- http://maven.apache.org/plugins/maven-checkstyle-plugin/examples/multi-module-config.html -->
    <!-- doesn't seem to be necessary? -->
<!--
<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>${checkstyle.plugin.version}</version>
            <configuration>
                <configLocation>checkstyle/mycompany-coding-rules.xml</configLocation>
                <packageNamesLocation>checkstyle_packages.xml</packageNamesLocation>
            </configuration>
        </plugin>
    </plugins>
</reporting>
-->

问题是, TeamCity XML报表无法在Checkstyle 5.1之前解析Checkstyle报表,所以这些都对我没有帮助!

  ask by Barn translate from so

未解决问题?本站智能推荐:

1回复

如何使用checkstyle-plugin验证源文件中使用的编码?

简单的事情:如果选择的文件( .java , .xml )编码不正确(我想在源文件中强制执行UTF-8 ),我希望能够通过checkstyle中断构建。 我目前正在为许多其他构建断路器使用checkstyle,例如强制使用正确的LineFeeds和/或Tab字符的使用,但似乎没有类似Fil
1回复

Maven Checkstyle插件和番石榴/谷歌收藏依赖冲突

在我们的多模块maven(3)项目中,我们正在使用maven checkstyle插件。 由于我们已经将番石榴的依赖关系转移到了父pom,因此我们再也无法成功执行checkstyle:checkstyle目标,因为它失败,并带有以下异常: 原因可能是maven checkstyle插件
1回复

Checkstyle在Maven中工作,但在Jenkins中不工作

我正在使用Maven,Maven Checkstyle插件,Jenkins和Jenkins Checkstyle插件。 我总共有7个项目。 1个父项目和6个子项目。 我有以下3种情况: 所有project.n父pom的Checkstyle报告,我在标记中声明了checks
1回复

在Maven中为特定插件禁用并行构建

我使用带有-T选项的maven构建项目。 有时构建会因随机的checkstyle错误而失败。 是否可以为特定插件( checkstyle )禁用-T选项并并行阻止该插件的执行? 以防万一附加stacktrace: 要么
2回复

运行“ MVN网站”后,我的Checkstyle报告在哪里?

我正在将Maven 3.2.3与Checkstyle 2.13插件一起使用。 我有一个多模块项目,并且在父pom中有此配置… 当我运行“ MVN网站”时,我获得了成功,没有错误或警告。 在target / site / index.html生成报告文件,但是当我在浏览器中访问该页面时
1回复

从命令行覆盖运行时使用的依赖项版本

一般 :我需要从命令行执行maven插件与重写的依赖版本(插件依赖)。 插件不会在项目pom中定义。 具体 :我需要执行maven-checkstyle-plugin作为teamcity build的一步; 这个插件不会被定义为项目pom。 我使用以下命令行: 但我需要用最新
1回复

如何排除Maven Checkstyle中未修改的文件?

我想将http://maven.apache.org/plugins/maven-checkstyle-plugin/用作项目构建的一部分,以使基于违规的构建失败。 但是,由于某些项目已经存在,并且其中包含许多现有代码,因此,我希望以仅适用于修改后的文件(svn / git)而不适用于整个项目
3回复

Maven Checkstyle插件:将警告打印到控制台

我似乎无法弄清楚如何在运行检查目标时使用maven-checkstyle-plugin将警告打印到控制台。 如果我配置为: ...我在控制台中看不到任何内容,并且检查没有失败。 如果我将严重性更改为错误,则检查失败。 有任何想法吗? 我想念什么吗? 插件配置如下
1回复

在多模块项目中禁用Maven Checkstyle,PDM以获取Groovy源代码

我有一个多模块的Maven项目,我找不到禁用groovy源的pmd,checktyle的方法。 我确实从顶层运行命令: 我的项目的结构是: 我不希望pmd / checkstyle检查我的常规文件。 这是pluginManagement内的parent pom部分:
1回复

将Maven-checkstyle-plugin集成到构建中时遇到麻烦

如果'checkstyle'检测到任何错误,我希望构建失败。 我提到了如何使用checkstyle和https://maven.apache.org/plugins/maven-checkstyle-plugin/usage.html 停止Maven构建 。 我的pom.xml看起来像这样: