如何使用checkstyle:在多模块项目中检查



我试图在一个多模块项目中使用Maven Checkstyle插件。<sourceDirectories>(插件开始查找代码的地方)的默认设置是${project.compileSourceRoots}。在我的情况下,这解析为[C:workspaceprojectnamesrcmainjava],即List<String>

现在,默认路径对我来说没有价值,因为我的代码驻留在不同的地方,比如:[C:workspacesprojectnamemodule1srcmainjava]。因此,我需要将<sourceDirectories>更改为我的代码实际所在的目录列表。

到目前为止,一切顺利。

问题是<sourceDirectories>期望List<String>。我尝试了以下操作:

<sourceDirectories>
    <sourceDirectory>pathToCode1</sourceDirectory>
    <sourceDirectory>pathToCode2</sourceDirectory>
</sourceDirectories>

…但这行不通。它将采用默认路径。(另外,不支持使用<sourceDirectory> !)

只有一个 <sourceDirectory>(没有周围的<sourceDirectories>)确实有效,但<sourceDirectory>只采用一条路径,您不能有多个<sourceDirectory>。所以,没有雪茄。另外,请记住<sourceDirectory>已被弃用。

我还尝试了各种其他方法来提供List<String><sourceDirectories>,但是唉,没有进展。下面是一些例子:

<sourceDirectories>[pathToCode]</sourceDirectories>
<sourceDirectories>pathToCode</sourceDirectories>
<sourceDirectories>{pathToCode}</sourceDirectories>
<sourceDirectories>{[pathToCode]}</sourceDirectories>
<sourceDirectories>{{pathToCode}}</sourceDirectories>
<sourceDirectories>{{{pathToCode}}}</sourceDirectories>

是否有另一种方法(直接,没有"子标签")提供List<String> maven?

插件坏了吗?

我错过什么了吗?

编辑下面的

我的项目结构:

MyProject
|-- pom.xml <-- plugin runs fine here
|-- domain-module
|   |-- src
|   |   `-- main
|   |       `-- com/example/hello...
|   |           |-- TheCode.java
|   |       `-- resources
|   |           |-- checkstyle.xml
|   |           `-- LICENSE.TXT
|   `-- pom.xml
|-- poms
|   |-- parent
|   |   `-- pom.xml <-- this is my parent pom

<dependencies>
    <dependency>
        <groupId>com.puppycrawl.tools</groupId>
        <artifactId>checkstyle</artifactId>
        <version>${checkstyle.version}</version>
    </dependency>    
</dependencies>
<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.16</version>
                <dependencies>
                    <dependency>
                        <groupId>com.example.hello</groupId>
                        <artifactId>domain-module</artifactId>
                        <version>${project.version}</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>validate</id>
                        <phase>validate</phase>
                        <configuration>
                            <configLocation>domain-module/src/main/resources/checkstyle.xml</configLocation>
                            <encoding>UTF-8</encoding>
                            <consoleOutput>true</consoleOutput>
                            <failsOnError>false</failsOnError>
                            <failOnViolation>true</failOnViolation>
                            <violationSeverity>warning</violationSeverity>
                            <logViolationsToConsole>true</logViolationsToConsole>
                            <skip>false</skip>
                        </configuration>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <...>
        </build>
    </pluginManagement>
</plugins>

从2.13版开始,sourceDirectories的使用被打破了(https://issues.apache.org/jira/browse/MCHECKSTYLE-260)。

在2.12中可以工作。Andreas Dangel在Jira中提到:

这里描述的配置Checkstyle -排除文件夹仍能工作。然后排除在checkstyle中发生,而不是在maven-checkstyle-plugin .

最新更新