Chciałbym połączyć kilka plików jar zbudowanych za pomocą programu Gradle 1.6 w ramach aplikacji Java WebStart.Dodawanie atrybutów do pliku manifestu pliku jar przy użyciu Gradle
mogę tego podpisać słoiki poprawnie z certyfikatem i określić codebase
i permissions
atrybuty dla wytwarzanych przedmiotów za pomocą standardowego zadanie słoik tak:
jar {
manifest.attributes provider: 'tribe7.net'
manifest.attributes permissions: 'all-permissions'
manifest.attributes codebase: '*'
}
To dlatego, że najnowsza wersja webstart Java w JDK/JRE firmy Oracle powoduje, że atrybuty te są obowiązkowe, lub wnosi skargę do użytkownika na temat zabezpieczeń aplikacji.
Preventing RIAs from Being Repurposed
Jednak moje słoiki artefakt ma zależności innych firm (na przykład slf4j) i muszę jeszcze znaleźć intuicyjny sposób włączenia tych ATUTY w takich słoików osób trzecich. Mając to na uwadze, moja ostateczna struktura aplikacji webstart wygląda jakby tak:
./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
Powoduje to, że w czasie wykonywania, webstart nie narzekać moich artefaktów ale robi to dla słoików osób trzecich, ponieważ oczywiście don „t mieć atrybuty w pliku manifestu:
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
Ponieważ nie bezpośrednio kontrolować manifestu pokolenia do słoików zewnętrznych muszę jakoś zmodyfikować pliki manifestu obecne wewnątrz katalogu build/webstart/lib
wyraźnie włączyć te atrybuty w celu uszczęśliwienia strony internetowej.
Czy istnieje sposób dodawania atrybutów do pliku manifestu pliku jar za pomocą Gradle? W przypadku, gdy ktoś jest zainteresowany, to moja Gradle zbudować skrypt:
Dzięki za poświęcony czas i pomoc!
UPDATE
odpowiedź Piotra pracował! To jest zaktualizowany kod:
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'
)
Dzięki!