Gradle이 모든 선언 및 전이 종속성을 가져 와서 출력 병에 추가하도록하려면 어떻게해야합니까? 나는 here의 약식을 사용하려고 노력하고 있지만 실제적으로 전이 의존성을 포함하지는 않습니다.Gradle : 전이 의존성을 가져오고 최소 런타임 지방 병으로 내보내기
ProGuard가 출력을 올바르게 최적화하고 축소 할 수 있도록 이러한 종속성을 포함시키고 싶습니다.
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile('com.itextpdf:itextpdf:5.4.3') { transitive = true }
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'net.sf.proguard:proguard-gradle:4.10'
}
}
jar {
dependsOn configurations.runtime
from {
configurations.runtime.collect {
it.isDirectory() ? it : zipTree(it)
}
}
}
task proguard(type: proguard.gradle.ProGuardTask, dependsOn: build) {
configurations.runtime.each {
println it
}
injars jar.archivePath
outjars 'output.jar'
libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
keep "public class part1.** { * ; }"
//dontnote
//dontwarn
dontobfuscate
}
내가 http://itextpdf.com/examples/iia.php?id=12에서 코드 샘플을 사용하고,이 샘플 프로젝트의 경우 :
여기에 전이 종속성을 뽑아되지 않는 것을 보여주는 예 build.gradle
입니다. POM at MavenCentral은 컴파일 종속성으로 BouncyCastle 라이브러리를 나타내지 만 위의 build.gradle
은 출력 JAR에 패키지를 패키징하지 않거나 ~/.gradle
아티팩트 캐시로 가져 오지 않습니다.
경고를 사용하여 gradle proguard
을 실행하면 org.bouncycastle.*
클래스가 해결되지 않아 빌드가 실패합니다. 예를 들어 :
Warning: com.itextpdf.text.pdf.security.TSAClientBouncyCastle: can't find referenced class org.bouncycastle.tsp.TimeStampTokenInfo
가 (해제 경고는 나의 큰 프로젝트에서 다시 때문에 유사한 오류 메시지에 여기에 작동하지만) ProGuard에서이 문제를 해결 할 수없는 경우, Gradle을 축소해야하는 또 다른 방법이있다 완전 런타임 뚱뚱한 병?