«Исключение IllegalStateException: ни файлы, ни каталоги не совпадают» для несуществующего JAR

#sonarqube #sonarqube-scan

#sonarqube #sonarqube-сканирование

Вопрос:

Недавно я попытался обновить свою сборку Gradle до плагина SonarQube 2.2 и столкнулся со следующей ошибкой:

 Caused by: java.lang.IllegalStateException: No files nor directories matching '[/opt/bamboo-home/xml-data/build-dir/SPR-SONAR-JOB1/spring-core/build/libs/spring-cglib-repack-3.2.4.jar' in directory /opt/bamboo-home/xml-data/build-dir/SPR-SONAR-JOB1/spring-aop
 org.sonar.batch.scan.ProjectReactorBuilder.validateDirectories(ProjectReactorBuilder.java:302)
 org.sonar.batch.scan.ProjectReactorBuilder.loadChildProject(ProjectReactorBuilder.java:217)
 org.sonar.batch.scan.ProjectReactorBuilder.defineChildren(ProjectReactorBuilder.java:192)
 org.sonar.batch.scan.ProjectReactorBuilder.execute(ProjectReactorBuilder.java:116)
 org.sonar.batch.scan.ProjectScanContainer.projectBootstrap(ProjectScanContainer.java:120)
 org.sonar.batch.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer.java:98)
 org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:91)
 org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78)
 org.sonar.batch.scan.ScanTask.scan(ScanTask.java:64)
 org.sonar.batch.scan.ScanTask.execute(ScanTask.java:51)
 org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:125)
 org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:93)
 org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:78)
 org.sonar.batch.bootstrap.BootstrapContainer.executeTask(BootstrapContainer.java:173)
 org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:95)
 org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
 org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.executeOldVersion(BatchIsolatedLauncher.java:70)
 org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
 com.sun.proxy.$Proxy77.executeOldVersion(Unknown Source)
 org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:238)
 org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
 org.sonarqube.gradle.SonarQubeTask.run(SonarQubeTask.java:93)
  

Это spring-cglib-repack-3.2.4.jar действительно существует в spring-core/build/libs/ папке, поскольку моя сборка переупаковывает зависимость cglib в пользовательскую задачу jarjar.

Похоже, плагин ищет этот ресурс в spring-aop папке, отсюда и исключение.

Обратите внимание, что та же конфигурация работает с версией 2.1.

Комментарии:

1. Здесь та же проблема. У вас есть какие-либо решения?

2. Почему файл отсутствует? Насколько я понимаю, вы динамически генерируете некоторые дополнительные файлы JAR и добавляете их в путь к классу компиляции. SonarQube нужны эти JAR для выполнения анализа. Запрос, который вы имеете в виду, делает обратное: он фильтрует файлы, которые не существуют. Итак, я удивлен, что это работает с 2.1, а не с 2.2.

3. Только что протестировано для проверки master. ./gradlew sonarqube работает нормально. Затем обновлен до 2.2 и по-прежнему работает нормально. Просматривая папку ‘spring-core / build / libs/’, JAR присутствует.

4. Позвольте мне попробовать еще раз и отследить изменения, которые мы применили с тех пор в нашей сборке. Большое спасибо за попытку воспроизвести проблему!

5. Просто исправил этот вопрос, поскольку jar действительно существует. Я попробовал еще раз с jdk8u102 и jdk8u112 и локальными экземплярами sonarqube 4.5.6 и 5.2 — по-прежнему сбой с тем же исключением. Обратите внимание, что эта проблема также возникла в нашем публичном CI. Есть идеи о том, как сузить источник проблемы?

Ответ №1:

Мне пришлось указать путь к файлам класса

 sonar.java.binaries=target/
  

sonar-project.properties

Версия Sonar 6.2

Комментарии:

1. Мне не только пришлось установить sonar.java.binaries, но я должен был установить для него абсолютный путь, чтобы он работал.

Ответ №2:

Для устранения этой проблемы был отправлен запрос на извлечение. Я создал заявку и опубликую исправление ошибки:https://jira.sonarsource.com/browse/SONARGRADL-30

Комментарии:

1. Пожалуйста, не публикуйте идентичные ответы на несколько вопросов . Опубликуйте один хороший ответ, затем проголосуйте / отметьте, чтобы закрыть другие вопросы как дубликаты. Если вопрос не является дубликатом, адаптируйте свои ответы к вопросу .