java - 在 Gradle 中使用 ProGuard 收缩普通 Java 库
问题描述
我使用 Gradle,我想用 ProGuard 缩小一个库。这看起来很简单:只需将 ProGuard 添加到 buildscript 的类路径并创建 ProGuard 任务(示例)。
然后我会得到一个新的 jar,但是如果我compile project(':library')
在另一个模块中编写或执行:library:bintrayUpload
任务,旧的 jar 仍然会被使用。
如何在Gradle 将其作为依赖项或传递给 Bintray之前缩小库 jar?
解决方案
假设有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()
}
而已!
推荐阅读
- laravel - 选择框 laravel 未定义的变量
- date - 谷歌浏览器书签时间戳
- python - 使用 Tkinter 包管理器定位动态添加的标签
- r - 计算“dplyr”管道中的累积概率(Kaplan-Meier 生存函数)
- rust - 为什么对向量的引用在需要引用数组的函数中起作用
- php - Wordpress:使用 wp_insert_post() 后自定义帖子类型的存档为空
- java - PowerMock 怀疑
- json - JOLT 转换 - 嵌套的 Json 对象
- c# - 需要一些关于 async/await 和线程安全的解释
- python-3.x - Pandas:用函数内的空格替换列值