0

与えられた次の環境:

  • Windows Server 2012
  • Java 1.6
  • 構成済みの Maven プロジェクト (アセンブリまたはシェード プラグイン) および jarsigner:sign/verify プラグイン
  • Tomcat 7 内で動作する Jenkins 1.518 (Java 1.7 で動作)
  • Windows サービス ユーザーとして実行されている Tomcat

Maven プロジェクトをビルドすると、すべてが正常に機能し、アセンブリがビルドされ (アセンブリ プラグインとシェード プラグインを使用)、最後にアセンブリが署名され、maven-jarsigner-plugin で検証されます。

しかし、 jarsignerがアセンブリに署名しようとすると、Jenkins で構成された同じプロジェクトがビルド中に失敗します。ログファイルは次のように述べています。

message : Failed to execute goal org.apache.maven.plugins:maven-jarsigner-plugin:1.2:sign (sign) on project ext.pdfgui: Execution of 'cmd.exe /X /C ""C:\Program Files\Java\jdk1.6.0_43\jre\..\bin\jarsigner.exe" -verbose -keystore src/main/resources/signjar.keystore -storepass '*****' -keypass '*****' "D:\server\jenkinsWorkingDir\jobs\<project name>\workspace\trunk\<module>\target\artifact-jar-with-dependencies.jar" <cert alias>"' failed - Errorcode (1)
cause : Execution of 'cmd.exe /X /C ""C:\Program Files\Java\jdk1.6.0_43\jre\..\bin\jarsigner.exe" -verbose -keystore src/main/resources/signjar.keystore -storepass '*****' -keypass '*****' "D:\server\jenkinsWorkingDir\jobs\<project name>\workspace\trunk\<module>\target\artifact-jar-with-dependencies.jar" <cert alias>"' failed - Errorcode (1)
Stack trace : 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-jarsigner-plugin:1.2:sign (sign) on project ext.pdfgui: Execution of 'cmd.exe /X /C ""C:\Program Files\Java\jdk1.6.0_43\jre\..\bin\jarsigner.exe" -verbose -keystore src/main/resources/signjar.keystore -storepass '*****' -keypass '*****' "D:\server\jenkinsWorkingDir\jobs\<project name>\workspace\trunk\<module>\target\artifact-jar-with-dependencies.jar" <cert alias>"' failed - Errorcode (1)

上記のログ ファイルをドイツ語から英語に翻訳したので、正確な言い回しがわからないため、異なる場合があります。

詳細なログ ファイルには次のように記載されています。

[INFO] jarsigner: attempt to rename D:\server\jenkinsWorkingDir\jobs\<project name>\workspace\trunk\<module>\target\<artifact>-jar-with-dependencies.jar to D:\server\jenkinsWorkingDir\jobs\<project name>\workspace\trunk\<module>\target\<artifact>-jar-with-dependencies.jar.orig failed

解決策を探していると、このブログエントリにたどり着きました: http://www.iliachemodanov.ru/en/blog-en/14-tools/maven/44-maven-assembly-plugin-bug-en

ここで「maven-shade-plugin」が解決策として挙げられていたので、試してみます。pom ファイルを再構成しましたが、効果は同じです。Windows、Tomcat、または Jenkins がアセンブリのファイル ハンドルを保持しており、jarsigner プラグインがその名前を変更できないことがわかります。

だから、可能な解決策に対する私の答え。他のより洗練されたソリューションは高く評価されます。

4

1 に答える 1

0

そして、これが私が現在それを解決した方法です:デフォルトでアクティブな「アセンブリ」と呼ばれるmavenプロファイルにアセンブリ/シェードプラグイン(どちらを使用してもかまいません)を移動しました。

次に、jarsigner プラグインを「jarsigner」と呼ばれる別のプラグインにも移動し、デフォルトでアクティブにしました。

したがって、プロジェクトがコマンドラインからビルドされても何も変わりません。

次に、最初に assmebly プラグインをアクティブにし、jarsigner プラグインを非アクティブにしてプロジェクトをビルドする際に Jenkins を構成しました。

-Passembly,!jarsigner

そして、次の目標と引数を呼び出すだけでビルド後のステップを構成しました

deploy -P!assembly,jarsigner -DskipTests

テストは「通常の」ビルド中にすでにパスしており、2 回実行する必要はないため、パフォーマンスのためにここでテストをスキップします。

于 2013-07-09T12:07:34.187 に答える