Gradle(科特林 DSL):"Unresolved reference: proguard"

Gradle (Kotlin DSL): "Unresolved reference: proguard"

我正在尝试让 Proguard 工作,但我对 Gradle 还是个新手。 我的构建 gradle.kts 有一个错误(未解决的参考:proguard),我无法创建一个 proguard 任务:

plugins {
    id("com.github.johnrengelman.shadow") version "5.2.0"
    java
    kotlin("jvm") version "1.3.61"
}

group = "*...*"
version = "*...*"

repositories {
    mavenCentral()
    jcenter() 
}

dependencies {
    implementation(kotlin("stdlib-jdk8"))
    //*...*
    implementation("net.sf.proguard","proguard-gradle","6.2.2") //is this correct?
}

configure<JavaPluginConvention> {
    sourceCompatibility = JavaVersion.VERSION_1_8
}
tasks {
    compileKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    compileTestKotlin {
        kotlinOptions.jvmTarget = "1.8"
    }
    jar{
        manifest {
        attributes["Main-Class"] = "*...*"
        }
    }

    shadowJar{
        archiveBaseName.set("*...*")
        archiveClassifier.set("")
        archiveVersion.set("")
    }



    register<proguard.gradle.ProGuardTask>("myProguardTask") { //Unresolved reference: proguard

    }


}

不是一个Android项目 因为 Whosebug 希望我编写的不仅仅是代码:我计划以某种方式 link proguard 输出到 shadowjar 任务。如果你知道怎么做我也很感兴趣(因为这个问题我不能自己尝试)。

您在项目中声明了混淆器的依赖项,而不是 Gradle 本身。

将依赖项移动到 buildscript 块:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'net.sf.proguard:proguard-gradle:6.2.2'
    }
}

那么您应该可以创建任务了。


或者,您可以在 settings.gradle.kts:

中声明存储库
pluginManagement {
    repositories {
        jcenter()
    }
}

这将 trim 在 build.gradle.kts 中的 buildscript 块下:

buildscript {
    dependencies {
        classpath("net.sf.proguard:proguard-gradle:6.2.2")
    }
}