在Gradle中使用ProGuard收缩普通Java库

时间:2018-06-20 18:04:41

标签: java gradle proguard

我使用Gradle,并且想使用ProGuard缩小库。这看起来很简单:只需将ProGuard添加到buildscript的类路径并创建ProGuard任务(example)。

然后我将获得一个新的jar,但是如果我在另一个模块中编写compile project(':library')或执行:library:bintrayUpload任务,仍将使用旧的jar。

如何在之前收缩库jar并将其作为依赖项传递给Bintray或传递给Bintray?

1 个答案:

答案 0 :(得分:0)

假设有一个proguard任务。

def libraryJar = rootProject.file(
        "${project.name}/build/libs/${project.name}-${project.version}.jar")
def shrinkedJar = rootProject.file(
        "${project.name}/build/libs/${project.name}-${project.version}-shrinked.jar")

jar.finalizedBy proguard
proguard.doLast {
    if (!libraryJar.delete()) throw new IllegalStateException()
    if (!shrinkedJar.renameTo(libraryJar)) throw new IllegalStateException()
}

就是这样!