2016-04-15 7 views
1

私は署名付きのjarで提供したいEclipseプラグインをビルドしています。jarsignスクリプトが署名付きjarの既存のマニフェスト値を上書きしないようにするにはどうすればよいですか?

Eclipse UIを使用して更新サイトを作成し、そこから手動でプラグインと機能を構築した後、作成したjarに署名したいと思います。

このようにすると、jarのマニフェストがOSGIメタ情報属性を失い、Eclipseを再起動してもプラグインが見つからないことがあります。 Jarsのマニフェストには署名情報のみが残っています。

私はアーティファクトに署名するために、このスニペットを使用しますが、私はJDKツールjarsignでも、この現象を再現することができます

<signjar alias="${keystore.alias}" keystore="${keystore}" 
      storepass="${keystore.password}" 
      lazy="true" tsaurl="http://time.certum.pl/"> 
    <path> 
     <path refid="plugins"/> 
     <path refid="features"/> 
    </path> 
</signjar> 

私はこの1つのようなプラグインから提供されたマニフェストを使用し、プラグインから:

Bundle-ManifestVersion: 2 
Bundle-Name: Tomcat Manager Plugin 

署名中に既存のマニフェストが保持されるようにするにはどうすればよいですか?

+0

eclipse.jarsigner antタスクを使用できます。私たちはそれを私たちのproectsを使用し、それはyoluのように動作します。 jarsignerタスクに関する情報はありません。たぶんそれは属性行keepmanifestまたはuseexistingmanifesを持っているかもしれません... – guleryuz

+0

私はあなたがeclipse.jarsigner antタスクで何を意味するか分かりません。私はant自身が提供するjarsigningのデフォルトのantタスクを使用しています。https://ant.apache.org/manual/Tasks/signjar.html – Markus

+0

申し訳ありませんが、タスク名はeclipse.jarProcessorです.jar署名の属性があります。 sign = "true"を指定すると、既存のマニフェストを保持しながらjarファイルに署名します – guleryuz

答えて

1

プラグインマニフェストは、JDKの観点からは「実際の」マニフェストではないことがわかりました。 JDKの観点からのマニフェストには、属性 マニフェスト・バージョンが必要です。そこで質問からマニフェストは次のようになります。

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Tomcat Manager Plugin 

マニフェストは次のようになり、今明らかに必須属性マニフェスト・バージョンを持っている場合、jarsignerには、予想されるようにその仕事をしていませんし、既存のマニフェストコンテンツが保存されます。