在尝试了一些东西之后,我找到了解决方案。我所需要的只是我的多模块项目的根 pom 中的一个 Scalastyle 条目,如下所示:
<build>
<plugins>
<plugin>
<groupId>org.scalastyle</groupId>
<artifactId>scalastyle-maven-plugin</artifactId>
<version>0.8.0</version>
<configuration>
<sourceDirectory>${project.basedir}/src/main/scala</sourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/scala</testSourceDirectory>
<configLocation>scalastyle_config.xml</configLocation>
<outputFile>${project.basedir}/checkstyle-result.xml</outputFile>
<outputEncoding>UTF-8</outputEncoding>
</configuration>
</plugin>
</plugins>
</build>
这里的重要部分是${project.basedir}。我之前试过没有,它没有工作。
在 Jenkins 的项目配置中,我在Build -> Goals and options部分给出了scalastyle:check目标,例如
clean install scalastyle:check
在Build settings下,我勾选了Publish Checkstyle analysis results复选框。
现在 Jenkins 发布了 Scalastyle 结果。然而,一个问题仍然存在:Jenkins 似乎没有选择我的 Scalastyle 配置文件 (scalastyle_config.xml),而是使用了 scalastyle-maven-plugin 的默认规则。至少这是我怀疑的,因为对于同一个项目,我在 IntelliJ(它使用我的自定义配置文件)中得到的 Scalastyle 警告比在 Jenkins 中更多......
更新:我错了。Jenkins 确实采用了我的自定义规则。然而,它比 IntelliJ 显示了更多的 Scalastyle 警告。我稍后会调查。