Как использовать Gradle Manifest API для вставки файла `MANIFEST.MF` в корень zip-файла

Мы используем атрибут manifest подключаемого модуля java для записи файлов MANIFEST.MF в наши артефакты jar .

Мы также используем gradle для создания проектов GWT , и мы определили для этих проектов выходной файл zip . Я хочу включить файл MANIFEST.MF в корень этого zip-файла.

Я пробовал использовать задачу типа : Jar , поэтому могу использовать его свойство manifest , но проблема, конечно же, в том, что файл манифеста записан в META-INF / MANIFEST.MF , который мне не нужен. Причина в том, что мы распаковываем архив в основное приложение, и мне нужно иметь возможность ссылаться на файл MANIFEST.MF во время выполнения для моих собственных гнусных целей.

Прямо сейчас архив выглядит так:

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

И мне нужно, чтобы он выглядел так:

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

Я уже успешно добился того, чтобы он выглядел так:

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

Посредством определения вроде:

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

Метод writeTo выглядит многообещающим, за исключением того, что я не могу найти реализацию этого интерфейса, которую я мог бы использовать, и стараюсь не писать свой собственный.

Мысли?

5
задан Tim Visher 23 January 2012 в 15:00
поделиться