2009-12-09 18 views
3

J'ai un plugin Eclipse pour lequel je crée les fichiers JAR du bundle OSGi avec Ant. Je voudrais les signer avec la tâche Ant, mais cela écrase le contenu de MANIFEST.MF avec les signatures de classe, rendant les paquets OSGi inutilisables. L'outil Jarsigner JDK a le même comportement. L'Eclipse PDE semble avoir cette fonctionnalité, mais autant que je sache, vous ne pouvez l'utiliser qu'à partir d'Eclipse. Je veux être en mesure d'exécuter ma construction Ant à partir de la ligne de commande. Est-ce que quelqu'un sait d'une manière simple d'ajouter les signatures de classe à MANIFEST.MF au lieu de l'écraser?Comment puis-je signer un bundle OSGi avec Ant sans écraser le contenu de MANIFEST.MF?

Répondre

2

Je ne pense pas que le manifeste soit écrasé par défaut. Observez le script de console suivant:

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

Je l'ai encore essayé et mon MANIFEST.MF est toujours écrasé. Je suis sur Windows XP cependant. – FelixM

+0

Windows ne remplacera pas non plus le manifeste. – AlBlue

+0

Je suis perplexe, maintenant ça marche. Peut-être que quelque chose s'est mal passé lors de la création des fichiers JAR. – FelixM

2

Cela semble être un problème JDK. Avec 1.5.0_16, le jarsigner écrase mon MANIFEST.MF existant, mais avec 1.6.0_13 tout fonctionne bien.