Comment utiliser Gradle Manifeste de l'API pour insérer un " MANIFESTE.MF` fichier dans la racine d'un fichier zip

Nous utilisons le manifest attribut du plugin java pour écrire MANIFEST.MF fichiers à notre jar artefacts.

Nous utilisons également gradle pour construire GWT projets et de la production, nous avons défini pour ces projets est un zip. J'aimerais inclure un MANIFEST.MF fichier dans la racine de ce fichier zip.

J'ai essayé à l'aide d'une tâche de type: Jar afin que je puisse utiliser son manifest bien, mais le problème, bien sûr, est que le fichier manifeste est écrit dans META-INF/MANIFEST.MF, que je ne veux pas. La raison en est que nous décompressez l'archive dans l'application principale et j'ai besoin d'être en mesure de référence de la MANIFEST.MF fichier au moment de l'exécution pour mes propres fins malveillantes.

Donc, en ce moment les archives ressemble à ceci:

/gwtdirectory/
/gwtdirectory/file1
/gwtdirectory/file2
/gwtdirectory/...
/gwtdirectory/filen

Et j'ai besoin qu'il a pris comme ceci:

/gwtdirectory/
/gwtdirectory/MANIFEST.MF
/gwtdirectory/file1
/gwtdirectory/file2
/gwtdirectory/...
/gwtdirectory/filen

J'ai déjà réussi à eu à le faire ressembler à:

/gwtdirectory/
/gwtdirectory/META-INF/MANIFEST.MF
/gwtdirectory/file1
/gwtdirectory/file2
/gwtdirectory/...
/gwtdirectory/filen

À travers une définition comme:

task pack(type: Jar){
  manifest {
    attributes(...)
  }
  extension = 'zip'
  from gwt.destinationDir
}

La writeTo méthode semble puissant prometteur, sauf que je ne peux pas trouver une implémentation de cette interface que je peux l'utiliser et je vais essayer d'éviter d'écrire mon propre.

Pensées?

Jar tâche a getManifest() qui renvoie le Manifest mise en œuvre. Donc, je suppose que vous devriez être en mesure de faire pack(type:Jar){ manifest.writeTo(...) }.

OriginalL'auteur Tim Visher | 2012-01-23