Maven can';不能索引两次-testSourceDirectory和sourceDirectory是相同的

Maven can';不能索引两次-testSourceDirectory和sourceDirectory是相同的,maven,jenkins,sonarqube,Maven,Jenkins,Sonarqube,我已经将性能测试创建为主模块的maven子模块。所有测试类都是在src/main/java下编写的,而不是在src/test/java下编写的 我能够将项目打包为jar并运行它来测试项目的性能 我想执行mvn测试。对于mvn测试来说,我应该设置值。在本例中,我的代码位于src/main/java中,我将其设置为: <testSourceDirectory>src/main/java</testSourceDirectory> 如何修复此问题?这不是标准的Maven用法,

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

我能够将项目打包为jar并运行它来测试项目的性能

我想执行
mvn测试
。对于
mvn测试
来说,我应该设置
值。在本例中,我的代码位于src/main/java中,我将其设置为:

<testSourceDirectory>src/main/java</testSourceDirectory>

如何修复此问题?

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

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

但是正确的Maven方法是将您的测试放在src/test/java中,并打包您的测试:
我也面临同样的问题。最后,借助以下文档解决了此问题:-

Q:ERROR:原因:文件[…]无法索引两次。

A:如果出现以下错误,您必须验证您的排除/包含 财产。请检查包含/排除模式是否产生 源文件和测试文件的不相交集

错误:原因:文件[…]无法索引两次。请检查一下 包含/排除模式为主模式和测试模式生成不相交集 文件示例可能如下所示:

sonar.sources=.
sonar.tests=.
sonar.test.inclusions=**/*Test*/**
sonar.exclusions=**/*Test*/**

如果项目不遵循默认的Maven目录结构,那么在项目的pom中,您可以明确指定源代码部分和测试部分的位置:

<properties>
    <sonar.sources>src/main/foo</sonar.sources>
    <sonar.tests>src/test/bar</sonar.tests>
</properties>

src/main/foo
src/试验/钢筋

在Android项目上运行
sonarqube
Gradle任务时,我发现这个
不能被索引两次
错误。该问题与存储在
app/src/debug/assets
中的文件有关

我尝试设置
sonar.sources
sonar.tests
属性以使用不相交的集合,但无法解决错误

要修复我更改的错误,请执行以下操作:

property "sonar.coverage.exclusions", "**/assets/**, ..."
致:


为了完全忽略/assets/目录。

可能会删除一些日志“已编制索引的文件”是一个相当稀少的信息。用准确的错误更新了问题。在
sonar.properties
中放入
sonar.excludes=src/main/java/**
sonar.test.excludes=src/main/java/**
,然后重新启动sonar服务器?但这对我来说仍然不起作用,我在pom.xml中看到了相同的异常,我在pom.xml中看到了
src
,这就是issue@AnandRockzz你救了我的命。我在build.gradle文件中也有相同的配置:
property "sonar.coverage.exclusions", "**/assets/**, ..."
property "sonar.exclusions", "**/assets/**, ..."