Не может быть проиндексирован дважды - testSourceDirectory и sourceDirectory одинаковы
Я создал тест производительности как подмодуль maven для моего основного модуля. Все тестовые классы написаны в разделе src/ main/java, а не src/ test/java
Я могу упаковать проект как jar и запустить его для тестирования производительности моего проекта.
Я хотел выполнить mvn test
. Для работы mvn test
у меня должно быть значение <testSourceDirectory>
. Как и в этом случае, у меня есть код в src/main/java, который я установил для этого:
<testSourceDirectory>src/main/java</testSourceDirectory>
Теперь 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 ->
Как исправить эту проблему?
Ответы
Ответ 1
Я столкнулся с той же проблемой. Наконец, решил это с помощью следующей документации: -
https://github.com/SonarOpenCommunity/sonar-cxx/wiki/FAQ
Q: ERROR: Caused by: File [...] can't be indexed twice.
A: В случае ошибки ниже, вы должны подтвердить свое исключение/включение свойства. Пожалуйста, проверьте, что шаблоны включения/исключения производят несвязанные наборы для исходных и тестовых файлов
ОШИБКА: Причина: файл [...] не может быть проиндексирован дважды. Пожалуйста, проверьте это шаблоны включения/исключения создают непересекающиеся множества для основного и тестового Файлы Пример может выглядеть следующим образом:
sonar.sources=.
sonar.tests=.
sonar.test.inclusions=**/*Test*/**
sonar.exclusions=**/*Test*/**
Ответ 2
Это не стандартное использование Maven, но вы можете легко исправить анализ SonarQube с использованием исключений.
sonar.exclusions = SRC/главная/Java/**
или
sonar.test.exclusions = SRC/Основной/Java/**
в зависимости от того, хотите ли вы, чтобы исходные файлы рассматривались как тесты или основные файлы.
Но правильным способом Maven было бы поставить ваши тесты в src/test/java и ackage ваши тесты:
https://maven.apache.org/guides/mini/guide-attached-tests.html
Ответ 3
Если проект не соответствует структуре каталогов Maven по умолчанию, в pom проекта вы можете явно указать, где находится часть исходного кода и часть тестов:
<properties>
<sonar.sources>src/main/foo</sonar.sources>
<sonar.tests>src/test/bar</sonar.tests>
</properties>