Gradle 1.6으로 빌드 된 일부 jar 파일을 Java Web Start 응용 프로그램의 일부로 함께 제공하고 싶습니다.Gradle을 사용하여 jar 파일의 매니페스트에 속성 추가
나는 현재 인증서를 올바르게 항아리에 서명하고 그래서 같은 표준 항아리 작업을 사용하여 생산 된 유물에 대한 codebase
및 permissions
속성을 지정할 수 있습니다
jar {
manifest.attributes provider: 'tribe7.net'
manifest.attributes permissions: 'all-permissions'
manifest.attributes codebase: '*'
}
이 때문에 최신 자바 Webstart를 버전 Oracle의 JDK/JRE는 이러한 속성을 필수로 만들지 만 그렇지 않으면 사용자에게 응용 프로그램의 보안에 대해 불만을 제기합니다.
Preventing RIAs from Being Repurposed
는하지만, 내 유물 항아리 타사 종속성이 (예를 들어, SLF4J에 대한) 및 I는 타사 항아리에서 이러한 부가 요소를 포함 할 수있는 직관적 인 방법을 찾고 있습니다. 이를 염두에두고, 내 마지막 Webstart를 응용 프로그램의 구조는 다음과 같은 종류의 외모 :
./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
결과는 런타임에, Webstart를 내 유물에 대해 불평하지 않습니다하지만 타사 항아리를 위해 그렇게 때문에 그들은 분명히 돈 'T는 자신의 매니페스트 파일의 속성이 있습니다
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
내가 직접 내가 어떻게 든 build/webstart/lib
디렉토리 내부에 존재 매니페스트 파일을 수정해야하는 타사 항아리에 대한 매니페스트 생성을 제어하지 않기 때문에 명시 적으로 그 속성을 포함 웹 스타트를 행복하게하기 위해서.
Gradle을 사용하여 jar 파일의 매니페스트에 속성을 추가하는 방법이 있습니까? 시간에 대한
감사합니다 도움이 : 경우 사람이 내 Gradle을 구축 스크립트, 관심!
UPDATE 베드로의 대답은
을했다! 다음은 업데이트 된 코드입니다.
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'
)
고마워요!