我想通过src/main/resources扩展sonar.sources (默认情况下是pom.xml,src/main/java ),以便检查位于那里的XML文件。
这项看似简单的任务被证明是困难的,因为我有一个多模块的maven项目(> 100个模块,嵌套),其中许多模块都没有src/main/resources文件夹,其中大多数甚至没有src文件夹(例如用于packaging=pom)。如果将sonar.sources设置为pom.xml,src/main/java,src/main/resources或pom.xml,src/main,则会导致构建错误
[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.5:sonar (default-cli) on project xyz-parent: The directory 'C:\...\submodule\src\main\resources' does not exist for Maven module ... Please check the property sonar.sources -> [Help 1]sonar-maven-plugin本身在每个模块中都使用${project.build.sourceDirectory}来做正确的事情。
我尝试使用正则表达式将sonar.sources设置为src/main,方法是通过
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>regex-property</id>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<name>sonar.sources</name>
<value>${project.build.sourceDirectory}</value>
<regex>[/\\]+java$</regex>
<replacement></replacement>
<failIfNoMatch>false</failIfNoMatch>
</configuration>
</execution>
</executions>
</plugin>但这并不起作用,我也不知道应该将其绑定到哪个生命周期阶段才能执行。
或者,有没有办法避免由于sonar.sources中缺少目录而导致的错误?根据current sonar-maven source的说法,只有当POM有pom打包时,缺失的目录才会被忽略,而对于没有资源的ear或jar模块则不会。
或者我应该确保在声纳启动之前src/main已经存在?我可以使用什么钩子来实现呢?
发布于 2016-05-31 20:13:08
你可以做的一件事是:
在根POM中,定义以下属性:
sonar.sources to be .sonar.inclusions to be src/main文件夹的模块中找到的所有已知文件(如果它是exists的话
如果您想更好地控制模块中的内容,只需使用/覆盖sonar.exclusions或sonar.inclusions
https://stackoverflow.com/questions/37544410
复制相似问题