buildscript { repositories { mavenCentral() google() } dependencies { classpath("com.guardsquare:proguard-gradle:7.3.0") } } plugins { java application } repositories { mavenCentral() } dependencies { testImplementation("junit:junit:4.12") } application { mainClassName = "gradlekotlindsl.App" } tasks.withType { manifest { attributes["Main-Class"] = application.mainClassName } } tasks.register("proguard") { verbose() // Alternatively put your config in a separate file // configuration("config.pro") // Use the jar task output as a input jar. This will automatically add the necessary task dependency. injars(tasks.named("jar")) outjars("build/proguard-obfuscated.jar") val javaHome = System.getProperty("java.home") // Automatically handle the Java version of this build. if (System.getProperty("java.version").startsWith("1.")) { // Before Java 9, the runtime classes were packaged in a single jar file. libraryjars("$javaHome/lib/rt.jar") } else { // As of Java 9, the runtime classes are packaged in modular jmod files. libraryjars( // filters must be specified first, as a map mapOf("jarfilter" to "!**.jar", "filter" to "!module-info.class"), "$javaHome/jmods/java.base.jmod" ) } allowaccessmodification() repackageclasses("") printmapping("build/proguard-mapping.txt") keep("""class gradlekotlindsl.App { public static void main(java.lang.String[]); } """) }