首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sonar-maven-plugin:在多模块项目中扩展sonar.sources

sonar-maven-plugin:在多模块项目中扩展sonar.sources
EN

Stack Overflow用户
提问于 2016-05-31 19:25:40
回答 1查看 11.9K关注 0票数 15

我想通过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/resourcespom.xml,src/main,则会导致构建错误

代码语言:javascript
复制
[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,方法是通过

代码语言:javascript
复制
<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打包时,缺失的目录才会被忽略,而对于没有资源的earjar模块则不会。

或者我应该确保在声纳启动之前src/main已经存在?我可以使用什么钩子来实现呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-31 20:13:08

你可以做的一件事是:

在根POM中,定义以下属性:

  • sonar.sources to be .
  • sonar.inclusions to be
  • 这将包括SQ在src/main文件夹的模块中找到的所有已知文件(如果它是exists

的话

如果您想更好地控制模块中的内容,只需使用/覆盖sonar.exclusionssonar.inclusions

  • 即可
票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37544410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档