无法索引两次 - testSourceDirectory和sourceDirectory是相同的

Amo*_*dey 13 maven jenkins sonarqube

我已经将性能测试创建为主模块的maven子模块.所有测试类都是在src/main/java 下编写的,而不是在src/test/java 下编写的

我能够将项目打包为jar并将其运行到性能测试我的项目.

我想执行mvn test.为了mvn test工作,我应该有<testSourceDirectory>价值观.在这种情况下我在src/main/java中有我的代码我将其设置为:

<testSourceDirectory>src/main/java</testSourceDirectory>
Run Code Online (Sandbox Code Playgroud)

现在mvn test有效.

但问题是声纳构建失败,错误抱怨:can't be indexed twice.这对于我的pom来说是显而易见的testSourceDirectory并且sourceDirectory是相同的.

[ERROR] Failed to execute goal 
org.codehaus.mojo:sonar-maven-plugin:2.5:sonar (default-cli) 
   on project Blah: File [relative=XYZ.java, abs=/Path/XYZ.java] can't be indexed twice. 
Please check that inclusion/exclusion patterns produce 
disjoint sets for main and test files -> 
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

dir*_*ira 12

我遇到了同样的问题.最后,在以下文档的帮助下解决了它: -

https://github.com/SonarOpenCommunity/sonar-cxx/wiki/FAQ

问:错误:引起:文件[...]无法索引两次.

答:如果出现以下错误,您必须验证排除/包含属性.请检查包含/排除模式是否为源文件和测试文件生成不相交的集合

错误:引起:文件[...]无法索引两次.请检查包含/排除模式是否为主文件和测试文件生成不相交的集合示例可能如下所示:

sonar.sources=.
sonar.tests=.
sonar.test.inclusions=**/*Test*/**
sonar.exclusions=**/*Test*/**
Run Code Online (Sandbox Code Playgroud)


Jul*_*eam 5

这不是标准的 Maven 用法,但您可以使用排除项轻松修复 SonarQube 分析。sonar.exclusions=src/main/java/** 或 sonar.test.exclusions=src/main/java/**

取决于您希望将源文件视为测试文件还是主文件。

但正确的 Maven 方法是将您的测试放在 src/test/java 中并测试您的测试:https ://maven.apache.org/guides/mini/guide-attached-tests.html

  • 原来我在 pom.xml 中有 `&lt;sourceDirectory&gt;src&lt;/sourceDirectory&gt;`,这就是问题所在 (7认同)