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

问题描述

您可以执行的操作之一:

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

解决方法

我想扩展sonar.sources,默认情况下是pom.xml,src/main/javasrc/main/resources以检查位于此处的XML文件。

由于我有一个多模块maven项目(>
100个模块,嵌套),其中很多没有src/main/resources文件夹,而大多数甚至没有src文件夹(例如,对于Packaging = pom
),因此,看似简单的任务却变得非常困难。)。如果设置sonar.sourcespom.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(或\java通过在Windows上)

<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?根据当前的sonar-
maven源
,仅当POM具有pom打包但没有打包earjar没有资源的模块时,才会忽略缺少的目录。

还是应该src/main在声纳启动之前确保存在?我可以使用哪个钩子?

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”