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

标签 java gradle proguard

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

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

如何缩小库 jar 之前 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()
}

就是这样!

关于java - 在 Gradle 中使用 ProGuard 收缩普通 Java 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50954499/

相关文章:

java - 在eclipse插件中启动java程序失败

gradle - 如何为Gradle中的特定子项目在列表顶部添加其他存储库

android - Android 上的 ProGuard 和 Gson (ClassCastException)

Java泛型方法如何返回泛型内部类

java - SQLException : Operation not allowed after ResultSet closed. Java.Spring MVC

java - 如何放置 JFrame 图标

gradle - 将 jar 包含到 OSGi 包中的问题

android - Android Google Services无法下载4.2.0

android - java.lang.VerifyError : Verifier rejected class: Constructor returning without calling superclass constructor 错误

android - 在android代码中混淆strings.xml文件