我试图在一个多模块项目中使用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 .