当前位置: 首页 > 面试题库 >

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

梅耘豪
2023-03-14
问题内容

我想扩展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在声纳启动之前确保存在?我可以使用哪个钩子?


问题答案:

您可以执行的操作之一:

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


 类似资料:
  • 我有一个多模块项目和一个家长pom。xml及其两个模块。项目jar和项目。战争所有测试用例都在项目中。罐子当我运行mvn声纳时。母舰pom上的声纳目标,jacoco。未生成exec,代码覆盖率为空。我在父pom中具有以下属性。 请帮忙。我使用的是Sonarqube 4.2。

  • 我曾广泛使用过Maven 目前有5个不同的maven项目,每个项目都有一个不同的pom.xml。到目前为止,它们之间存在依赖关系,如果需要,每一个都指向 中的另一个。 现在我们不喜欢的是 当我们发布子projectA时,我们需要手动修改所有将projectA作为依赖项的项目以使用新版本。Saw Maven有一个版本插件,不知道这会有什么帮助。 作为解决方案,我希望在POM之间有一个更干净的组织,并

  • 我有一个多模块maven应用程序,我们需要通过Jenkins构建。项目结构如下: 现在,mvn清洁安装-fa.xml工作正常。为此,我创建了一个詹金斯的工作。现在,和a.xml一样,我有另一个项目b.xml.b.xml有和a.xml相同的代码,除了不同的Ids。所以,我又为詹金斯创造了一份工作b.xml.两份工作都很好。但是,现在我想根据我们在Git中提交的项目,从单个Jenkins工作中构建这两

  • 我这里有一个多模块maven项目。 父项目共有3个模块,with-paranamer,with-paranamer。 下面是项目的结构。 我想使用exec-maven-plugin在withon-paranamer模块中执行类。因此,我在这里的parent pom.xml中的pluginManagement下添加了exec-maven-plugin。 在unit-paranamer模块中,我添加了

  • 给定以下示例多模块项目: aggr/pom.xml(版本1.0-快照) aggr/父/pom.xml(2.0版-快照) aggr/app/pom.xml(版本3.0-SNAPSHOT) aggr/comp1/pom.xml(版本4.0-SNAPSHOT) 其中 parent 是任何其他 pom 的父级,并且应用具有 comp1 的依赖项。 通过发布发布:只要aggr文件夹在svn存储库中具有相同的

  • 关于maven项目结构,我有两个问题: 1)我正在创建一个maven多模块项目,并且想知道是否可以将模块的所有公共依赖项放在父POM中?这是正确的做法吗? 2)如果我正在创建一个包含所有web.xml和JSP文件的maven webapp项目,那么web控制器、侦听器和模型对象应该驻留在哪里?在一个单独的maven jar项目中还是在同一个webapp项目中?