0

私たちのMavenアセンブラのバージョンを1.1.6から1.1.8にアップデートしなければなりませんでした。それは起こった、今ソナーのMavenプラグインは、この例外がスローされる唯一の変化です:新しいMavenアセンブラプラグインのためにSonar 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> 

ソナーのコードによれば、通常、マップを通じてプロパティを取得します。これらの文字列の1つが配列リストである場合、この例外がスローされます。新しいMavenアセンブラがこれらの値を正しく渡すようにプロパティを設定する必要はありますか?最後に

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

答えて

1

は、我々は非文字列プロパティを注入バギーのプラグインを回避するために、バージョン3.1.1での回避策を実装していますこの問題の回避策を見つけました。私はカバレッジレポートを作成するためにJava 7と8を実行するルートにはいないと決めました(以前の回答とコメントを確認してください)。私はそれがうまくいくと確信していますが、私たちのdevマシンやCIマシンにJava 8環境が設定されていないので、別のルートを試しました。

私は最初mvn clean installの最後にモジュールCoverageModule(ビルドの最後のモジュールとして)を使用してソナーレポートを作成していました。 1.1.8 Javaアセンブラのバージョンは、プロジェクトをビルドしたときにうまくいっていなかったので、分析を実行しました。

通常のビルド中に私たちのモジュールのすべてのJacocoレポートをマージするために私のant task pluginが実行されるように、モジュールを保管しました。そのモジュールのpomからsonar-maven-pluginを削除し、それをプロジェクトの集約モジュール(すべてのモジュールの親)に入れました。 mvn clean installを実行した後、私はmvn sonar:sonarを実行することができ、新しいアセンブラのバージョンと私が使用していた古いソナーのバージョンとの競合はないようです。

+0

Javaバージョン7は、このプラグインと互換性がありません。現時点ではアップグレードできません。そのバージョンは含まれていますが、バージョン51には対応していますか? – Lencalot

+0

いいえ、Java 7はサポートしていません。Java 7(mvn cleanパッケージ)を使用してプロジェクトを構築し、次にJava 8(mvn sonar:sonar)を使用してSonarQube分析を実行することができます。別のオプションは、Mavenのツールチェーンを使用することです。 –

関連する問題