2012-01-23 11 views
5

dosyalarına MANIFEST.MF dosyaları yazmak için java eklentisinin manifest özniteliğini kullanırız.Bir 'MANIFEST.MF' dosyasını bir zip dosyasının köküne eklemek için Gradle's Manifest API'sini nasıl kullanırsınız?

Ayrıca, GWT projeleri oluşturmak için işaretçiyi kullanıyoruz ve bu projeler için tanımladığımız çıktı, zip. Bu zip dosyasının köküne MANIFEST.MF dosyasını eklemek istiyorum. Ben bu yüzden onun manifest özelliğini ancak sorunu kullanabilirsiniz type: Jar bir görevi kullanarak denedim

, tabii ki, bildirim dosyası istemiyorum, hangi META-INF/MANIFEST.MF yazılır olmasıdır. Bunun nedeni, arşivi ana uygulamaya açmamız ve kendi mantıksal amaçlarım için çalışma zamanında MANIFEST.MF dosyasını referans gösterebilmem gerekiyor.

Yani şu anda arşiv şuna benzer:

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

Ve bunun böyle sürdü gerekir:

/gwtdirectory/ 
/gwtdirectory/META-INF/MANIFEST.MF 
/gwtdirectory/file1 
/gwtdirectory/file2 
/gwtdirectory/... 
/gwtdirectory/filen 
: Zaten başarıyla ele verdik

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

o benzemeye

gibi bir tanımla:

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

writeTo yöntemi çok umut verici görünüyor, ancak kullanabileceğim bu arabirimin bir uygulamasını bulamıyorum ve kendi yazmamdan kaçınmaya çalışıyorum.

Düşünceler?

+0

'Jar' görevinin' Manifest 'uygulamasını döndüren getManifest() işlevi vardır. Bu yüzden sanırım 'pack (tip: Jar) {manifest.writeTo (...)}' yapabilmelisiniz. – rodion

cevap

3

Jar task görüntülendiğinde, bildirim dosyasının konumu yapılandırılabilir gibi görünmüyor.

Bir bildirim oluşturmak için not defterinin kendi DefaultManifest uygulamasını kullanabilir ve bu dosyayı zip dosyasında from ile birlikte ekleyebilirsiniz.

Bu deneyebilirsiniz:

import org.gradle.api.java.archives.internal.DefaultManifest 
import org.gradle.api.internal.file.IdentityFileResolver 

File manifestFile = file('build/myAwesomeManifest.mf') 

task generateManifest << { 
    manifest = new DefaultManifest(new IdentityFileResolver()) 

    // add some attributes 
    manifest.attributes(["attr1":"value1", "attr2":"value2"]) 

    // write it to a file 
    manifest.writeTo(manifestFile) 
} 
2

Sana Gradle manuel this chapter sonunda aradığınız tam olarak ne olduğunu düşünüyorum.

jar.manifest.writeTo("$buildDir/mymanifest.mf") 
+0

Yukarıdaki çözümü denedim, ancak işe yaramadı, lütfen bir örnek ekleyebilir misiniz? –

İlgili konular