Pergunta

Eu tenho um plugin do Eclipse para o qual eu crio os JARs pacote OSGi com Ant. Eu gostaria de assiná-los com a tarefa Ant, mas que substitui o conteúdo MANIFEST.MF com as assinaturas de classe, tornando a OSGi pacotes inutilizável. A ferramenta jarsigner JDK tem o mesmo comportamento. O Eclipse PDE parece ter essa funcionalidade, mas, tanto quanto eu sei que você só pode usá-lo de dentro do Eclipse. Eu quero ser capaz de executar o meu construção Ant na linha de comando. Alguém sabe de uma maneira simples de anexar as assinaturas classe para MANIFEST.MF em vez de substituí-lo?

Foi útil?

Solução

Eu não acho que o manifesto é sobrescrito por padrão. Observe o seguinte script console:

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

Outras dicas

Este parece ser um problema de JDK. Com 1.5.0_16, o jarsigner substitui minha MANIFEST.MF existente, mas com 1.6.0_13 tudo funciona bem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top