Vorrei raggruppare alcuni file jar creati con Gradle 1.6 come parte di un'applicazione webstart Java.Aggiunta di attributi al manifest di un file jar utilizzando Gradle
posso attualmente firmare i vasetti correttamente con un certificato e specificare gli attributi codebase
e permissions
per i manufatti realizzati utilizzando l'attività barattolo di serie in questo modo:
jar {
manifest.attributes provider: 'tribe7.net'
manifest.attributes permissions: 'all-permissions'
manifest.attributes codebase: '*'
}
Questo perché l'ultima versione Java Web Start in Il JDK/JRE di Oracle rende obbligatori questi attributi o si lamenta per l'utente della sicurezza dell'applicazione.
Preventing RIAs from Being Repurposed
Tuttavia, i miei vasi artefatto avere dipendenze di terze parti (ad esempio, slf4j) e devo ancora trovare un modo intuitivo per includere questi atributes in tali barattoli di terze parti. Con questo in mente, la mia struttura dell'applicazione webstart finale sembra un po 'come questo:
./build/webstart/my.jnlp
./build/webstart/lib/myartifactA-1.00.jar
./build/webstart/lib/myartifactB-1.00.jar
./build/webstart/lib/myartifactC-1.00.jar
./build/webstart/lib/slf4j-api-1.7.5.jar
Il risultato è che in fase di esecuzione, webstart non si lamenta dei miei artefatti ma lo fa per la terza vasi parti, perché, ovviamente, don 't hanno gli attributi nella loro file manifesto:
Missing Codebase manifest attribute for: file:/C:/build/webstart/lib/slf4j-api-1.7.5.jar
Missing Permissions manifest attribute for: file:/C:/build/webstart/lib/slf4j-api-1.7.5.jar
Missing Codebase manifest attribute for: file:/C:/build/webstart/lib/slf4j-simple-1.7.5.jar
Missing Permissions manifest attribute for: file:/C:/build/webstart/lib/slf4j-simple-1.7.5.jar
Dal momento che non controllano direttamente la generazione manifesta per il terzo vasetti di partito devo modificare in qualche modo i file manifesto presenti all'interno della directory build/webstart/lib
per includere esplicitamente tali attributi per rendere felice la webstart.
C'è un modo per aggiungere attributi al manifest di un file jar con Gradle? Nel caso in cui qualcuno è interessato, questo è il mio script Gradle costruire:
Grazie per il vostro tempo e aiuto!
UPDATE
risposta di Pietro ha funzionato! Questo è il codice aggiornato:
ant.jar(destfile: it, update: true) {
delegate.manifest {
attribute(name: 'permissions', value: 'all-permissions')
attribute(name: 'codebase', value: '*')
}
}
ant.signjar(
destDir: webstartSignedLibPath,
alias: project.getProperty('jarsign.keystore.alias'),
jar: it,
keystore: project.getProperty('jarsign.keystore.path'),
storepass: project.getProperty('jarsign.keystore.password'),
preservelastmodified: 'true'
)
Grazie!