Как я могу подписать пакет OSGi с помощью Ant, не перезаписывая содержимое MANIFEST.MF?

StackOverflow https://stackoverflow.com/questions/1877552

  •  18-09-2019
  •  | 
  •  

Вопрос

У меня есть плагин Eclipse, для которого я создаю OSGi bundle JARs с помощью Ant.Я хотел бы подписать их с помощью задачи Ant, но это перезаписывает содержимое MANIFEST.MF сигнатурами классов, делая пакеты OSGi непригодными для использования.Инструмент JDK jarsigner имеет такое же поведение.Eclipse PDE, похоже, обладает такой функциональностью, но, насколько я знаю, вы можете использовать его только из Eclipse.Я хочу иметь возможность запускать свою сборку Ant из командной строки.Кто-нибудь знает простой способ добавить сигнатуры класса в MANIFEST.MF вместо того, чтобы перезаписывать его?

Это было полезно?

Решение

Я не думаю, что манифест перезаписан по умолчанию.Соблюдайте следующий консольный скрипт:

$ 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=

Другие советы

Похоже, это проблема с JDK.С 1.5.0_16, jarsigner перезаписывает мой существующий файл MANIFEST.MF, но с 1.6.0_13 все работает нормально.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top