在 Gradle 内使用 ProGuard 收缩纯 Java 库
Shrink plain Java library with ProGuard within Gradle
我使用 Gradle,我想用 ProGuard 压缩一个库。这看起来很简单:只需将 ProGuard 添加到构建脚本的类路径并创建 ProGuard 任务 (example)。
然后我会得到一个新的jar,但是如果我在另一个模块中写compile project(':library')
或者执行:library:bintrayUpload
任务,旧的jar仍然会被使用。
如何压缩库 jar before Gradle 接受它并进一步传递,作为依赖项或 Bintray?
假设有一个 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()
}
就是这样!
我使用 Gradle,我想用 ProGuard 压缩一个库。这看起来很简单:只需将 ProGuard 添加到构建脚本的类路径并创建 ProGuard 任务 (example)。
然后我会得到一个新的jar,但是如果我在另一个模块中写compile project(':library')
或者执行:library:bintrayUpload
任务,旧的jar仍然会被使用。
如何压缩库 jar before Gradle 接受它并进一步传递,作为依赖项或 Bintray?
假设有一个 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()
}
就是这样!