You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SonarQube Groovy插件无法识别指定目录下的Groovy源码文件

解决SonarQube 6.7.3识别单独Groovy源码目录的问题

我之前维护Java/Groovy混合项目时也碰到过一模一样的问题——SonarQube默认只会扫描src/main/java下的Groovy文件,单独的src/main/groovy和src/test/groovy目录完全被忽略。好在通过调整Maven和SonarQube的配置,就能保留现有目录结构并让扫描正常工作,具体步骤如下:

1. 配置Maven Groovy插件,让Maven识别Groovy源码

首先要确保Maven能正确识别你的Groovy源码目录,这样SonarQube才能通过Maven插件获取到这些文件。推荐使用gmavenplus-plugin(比旧的gmaven插件更稳定),在项目的pom.xml中添加以下配置:

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.gmavenplus</groupId>
      <artifactId>gmavenplus-plugin</artifactId>
      <version>1.12.1</version> <!-- 选择兼容你Maven和Groovy版本的版本 -->
      <executions>
        <execution>
          <goals>
            <goal>addSources</goal>
            <goal>addTestSources</goal>
            <goal>compile</goal>
            <goal>testCompile</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <sources>
          <source>
            <directory>${project.basedir}/src/main/groovy</directory>
            <includes>
              <include>**/*.groovy</include>
            </includes>
          </source>
        </sources>
        <testSources>
          <testSource>
            <directory>${project.basedir}/src/test/groovy</directory>
            <includes>
              <include>**/*.groovy</include>
            </includes>
          </testSource>
        </testSources>
      </configuration>
    </plugin>
  </plugins>
</build>

这个配置会告诉Maven把src/main/groovy和src/test/groovy分别当成主源码和测试源码目录,同时完成Groovy代码的编译。

2. 告诉SonarQube扫描Groovy专属目录

接下来需要配置SonarQube的扫描参数,明确指定Groovy的源码和测试源码路径。你可以直接在pom.xml的<properties>节点中添加:

<properties>
  <!-- 指定Groovy主源码目录 -->
  <sonar.groovy.sources>src/main/groovy</sonar.groovy.sources>
  <!-- 指定Groovy测试源码目录 -->
  <sonar.groovy.test.sources>src/test/groovy</sonar.groovy.test.sources>
  <!-- 保留Java源码目录的配置 -->
  <sonar.java.sources>src/main/java</sonar.java.sources>
  <sonar.java.test.sources>src/test/java</sonar.java.test.sources>
</properties>

如果不想修改pom.xml,也可以在执行Sonar扫描命令时直接传递参数:

mvn sonar:sonar \
  -Dsonar.groovy.sources=src/main/groovy \
  -Dsonar.groovy.test.sources=src/test/groovy \
  -Dsonar.java.sources=src/main/java \
  -Dsonar.java.test.sources=src/test/java

为什么移到src/main/java能识别?

SonarQube的Java插件默认会扫描src/main/java下的所有文件,包括Groovy文件,这时候Groovy插件会接管这些文件的分析。但单独的groovy目录不在默认扫描路径里,必须通过sonar.groovy.sources参数明确告知Groovy插件去扫描这些目录。

完成以上配置后,重新执行Sonar扫描,src/main/groovy和src/test/groovy下的Groovy文件就会被正常识别和分析了。

内容的提问来源于stack exchange,提问作者Marco Baumeler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:59:03