現在のビルドプロセスについて少し心配しています。それは「間違った方法」のにおいがし、クライアントに多くの追加ダウンロードを引き起こします。
Webstartを介して公開する通常のJavaプロジェクトがあります。.jarファイルとして提供するさまざまなライブラリを使用します。JNLPは次のようになります。
<resources>
<!-- Application Resources -->
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se" max-heap-size="512m" java-vm-args="-Xincgc" />
<jar href="OurApp.jar" main="true" />
<jar href="nimrodlf-1.2.jar" main="false" />
<jar href="jackson-core-asl-1.9.10.jar" main="false" />
<jar href="jackson-jaxrs-1.9.10.jar" main="false" />
<!-- ... -->
ここまでは順調ですね。現在、異なる証明書で署名されたjarの使用に問題があると思います。あるいは、自己署名証明書で歌われている場合にのみ問題が発生する可能性があります。いずれにせよ、見つかった解決策は、すべてのjarファイルが同じ証明書で署名されている必要があるということでした。
続いて、すべてのjarファイルとライブラリをWebstartフォルダーにコピーし、Antでそのように署名します。
<target name="sign_jar" depends="check_publish">
<signjar keystore="ourapp.keystore" alias="jenkins" storepass="private" verbose="true">
<path>
<fileset dir="${publish.folder}/" includes="**/*.jar" />
</path>
</signjar>
</target>
すべてのjarファイルに署名するには長い時間がかかりますが、これはすべて正常に機能します。しかし、それはまた、私たちが自分のアプリケーションjarに変更を公開するたびに、すべてのクライアントがすべてのライブラリjarを再ダウンロードする原因になります(これはたくさんあります)。ライブラリは技術的には変更されませんが、辞任すると新しいように見えます。
私たちはこれを正しくやっていますか?もっと良い方法はありますか?ビルドプロセスを変更して、人々がライブラリjarをキャッシュできるようにすることはできますか?