我正在构建一个Eclipse插件,我想用签名的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>
从插件中我使用插件中提供的Manifest,如下所示:
Bundle-ManifestVersion: 2
Bundle-Name: Tomcat Manager Plugin
如何在签名时保留现有的清单?
答案 0 :(得分:1)
我发现插件清单从JDK的角度来看并不是一个“真正的”清单。 JDK透视图中的清单需要具有Attribute 清单 - 版本。所以问题中的清单应该是这样的:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Tomcat Manager Plugin
如果Manifest看起来像这样,现在有明显的强制属性 Manifest-Version ,那么jarsigner就像预期的那样完成它的工作并保留现有的Manifest内容。