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

2022-09-03 12:50:44

我想扩展 ,默认情况下是 ,为了检查位于那里的 XML 文件。sonar.sourcespom.xml,src/main/javasrc/main/resources

这个看似简单的任务变得很困难,因为我有一个多模块maven项目(>100个模块,嵌套),其中很多都没有文件夹,其中大多数甚至没有文件夹(例如,用于package=pom)。如果我设置为 或 ,这会导致生成错误:src/main/resourcessrcsonar.sourcespom.xml,src/main/java,src/main/resourcespom.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]

声纳-maven-plugin本身用于在每个模块中正确执行。${project.build.sourceDirectory}

我试图通过切断(或在Windows上)来使用正则表达式来设置sonar.sourcessrc/main/java\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>

但这无济于事,我不知道我应该将其绑定到哪个生命周期阶段以执行它。

或者有没有办法避免由于目录中缺少目录而导致的错误?根据当前的声纳专家,只有当POM具有打包但不包含或没有资源的模块时,才会忽略缺少的源目录。sonar.sourcespomearjar

或者我应该确保在声纳开始之前存在吗?我可以用什么钩子?src/main


答案 1

您可以执行的操作之一:

  • 在根 POM 中,定义以下属性:
    • sonar.sources成为.
    • sonar.inclusions成为src/main/**
    • =>这将包括 SQ 在模块中找到的所有已知文件(如果存在)src/main
  • 在你的模块中,如果你想更好地控制进入的东西,你只需要使用/覆盖或sonar.exclusionssonar.inclusions

答案 2

推荐