0

Пришлось обновить версию ассемблера maven до 1.1.8 с 1.1.6. Это единственное изменение, которое произошло, и теперь Sonar Maven Plugin бросает это исключение:Плагин Sonar Maven не работает из-за более нового плагина ассемблера maven, как я могу заставить новый плагин правильно передать свойства?

[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.0.2:sonar 
    (default) on project ReconCoverage: java.util.ArrayList cannot be cast to java.lang.String -> 

Плагины:

<groupId>org.codehaus.mojo</groupId> 
<artifactId>sonar-maven-plugin</artifactId> 
<version>2.7</version> 

<groupId>com.CORPNAME.raptor.build</groupId> 
<artifactId>assembler-maven-plugin</artifactId> 
<version>1.1.8</version> 

Я смотрел на это в течение недели, обновление до этой ассемблере версии требуется , Никакие другие команды не испытывают эту проблему от обновления, потому что они используют Sonar через jenkins. Я использую плагин maven, потому что наш проект имеет много модулей, и он структурирует результаты покрытия, чтобы соответствовать ему.

Я просмотрел код сонара и, похоже, это происходит в sonar.batch.bootstrap.userproperties. Я предполагаю, что это происходит, когда гидролокатор свойства передается в пункты, как: sonar.language, sonar.java.coveragePlugin, sonar.host.url и т.д. и т.п.

Пример охвата Свойства:

<sonar.language>java</sonar.language> 
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> 
<sonar.host.url>http://corp.sonar.url/</sonar.host.url> 
<sonar.jdbc.url>jdbc:oracle:thin:@sonardb.corp.com:0000:sonardb</sonar.jdbc.url> 
<sonar.jdbc.username>username</sonar.jdbc.username> 
<sonar.jdbc.password>password</sonar.jdbc.password> 
<sonar.jdbc.driver>oracle.jdbc.driver.OracelDriver</sonar.jdbc.driver> 

Согласно коду сонара, он обычно берет свойства через карту. И это исключает это исключение, когда одна из этих строк является списком массивов. В любом случае, чтобы настроить мои свойства так, чтобы новый ассемблер maven правильно передал эти значения?

ответ

0

я, наконец, нашел обходной путь для этой проблемы. Я решил не идти по пути запуска Java 7, а затем 8, чтобы создать отчет о покрытии (проверьте предыдущие ответы и комментарии). Я уверен, что это сработает, но поскольку ни одна из наших машин Dev или CI не создала среду Java 8, я попробовал другой маршрут.

Я изначально создавал отчет сонара в конце mvn clean install через модуль CoverageModule (который в качестве последнего модуля для сборки). Версия 1.1.8 Java-ассемблера бросала пригонку, когда она строила проект, а затем запускала анализ.

Я сохранил модуль так, чтобы во время нормальной сборки он все равно запускал мой ant task plugin, чтобы объединить все отчеты Javaoco нашего модуля. Я удалил sonar-maven-plugin из pom этого модуля и поместил его в модуль агрегатора Project (родительский модуль всех модулей). После запуска полного mvn clean install я могу запустить mvn sonar:sonar, и, похоже, нет никакого конфликта с новой версией ассемблера и старой версией сонара, которую я использовал.

1

Мы реализовали обходной путь в версии 3.1.1, чтобы обойти багги плагинов, не употребляющих инъекционные строковые свойства: https://jira.sonarsource.com/browse/MSONAR-145

Чтобы использовать его просто обновить вы pom.xml использовать:

<groupId>org.sonarsource.scanner.maven</groupId> 
<artifactId>sonar-maven-plugin</artifactId> 
<version>3.1.1</version> 
+0

Java-версия 7 несовместима с этим плагином. Не удалось обновить это в настоящее время. Есть ли версия, которая включает это, но работает для версии 51? – Lencalot

+0

Нет, мы не поддерживаем Java 7. Обратите внимание, что вы можете создать проект с Java 7 (mvn clean package), а затем запустить анализ SonarQube с помощью Java 8 (сонар mvn: сонар). Другой вариант - использовать инструментальные средства Maven. –