我有一个 Eclipse 插件,我用 Ant 为它创建了 OSGi 包 JAR。我想用 Ant 任务对它们进行签名,但这会用类签名覆盖 MANIFEST.MF 内容,从而使 OSGi 包无法使用。JDK jarsigner 工具具有相同的行为。Eclipse PDE 似乎具有该功能,但据我所知,您只能在 Eclipse 中使用它。我希望能够从命令行运行我的 Ant 构建。有人知道将类签名附加到 MANIFEST.MF 而不是覆盖它的简单方法吗?
问问题
970 次
2 回答
2
我不认为默认情况下会覆盖清单。观察以下控制台脚本:
$ touch MyMainClass.class
$ echo 'Main-Class: MyMainClass' > MyManifest
$ jar cvmf MyManifest myjar.jar MyMainClass.class
added manifest
adding: MyMainClass.class(in = 0) (out= 0)(stored 0%)
$ unzip -c myjar.jar META-INF/MANIFEST.MF
Archive: myjar.jar
inflating: META-INF/MANIFEST.MF
Manifest-Version: 1.0
Created-By: 1.6.0_17 (Apple Inc.)
Main-Class: MyMainClass
$ jarsigner myjar.jar mykeyid
Enter Passphrase for keystore:
$ unzip -c myjar.jar META-INF/MANIFEST.MF
Archive: myjar.jar
inflating: META-INF/MANIFEST.MF
Manifest-Version: 1.0
Created-By: 1.6.0_17 (Apple Inc.)
Main-Class: MyMainClass
Name: MyMainClass.class
SHA1-Digest: 2jmj7l5rSw0yVb/vlWAYkK/YBwk=
于 2009-12-10T08:43:15.770 回答
2
这似乎是一个JDK问题。使用1.5.0_16
,jarsigner 会覆盖我现有的 MANIFEST.MF,但1.6.0_13
一切正常。
于 2009-12-15T17:33:50.633 回答