我想将sonar.sources
(默认为pom.xml,src/main/java
)扩展为src/main/resources
,以便检查位于那里的XML文件。
这个看似简单的任务变得困难,因为我有一个多模块maven项目(> 100个模块,嵌套),其中很多没有src/main/resources
文件夹,其中大部分都没有甚至是src
文件夹(例如包装= 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
,方法是通过
/java
(或Windows上的\java
<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
中缺少目录而导致的错误?根据{{3}},如果POM包含pom
,但只有ear
或jar
模块没有资源,则只会忽略丢失的目录。
或者我应该在声纳开始之前确保src/main
存在?我可以使用什么钩子?
答案 0 :(得分:17)
你可以做的一件事:
sonar.sources
为.
sonar.inclusions
为src/main/**
src/main
文件夹中的模块中找到的所有已知文件(如果存在)sonar.exclusions
或sonar.inclusions