diff --git a/gr8-plugin-common/src/main/kotlin/com/gradleup/gr8/DownloadR8Task.kt b/gr8-plugin-common/src/main/kotlin/com/gradleup/gr8/DownloadR8Task.kt index e38b22a..fdb2f2e 100644 --- a/gr8-plugin-common/src/main/kotlin/com/gradleup/gr8/DownloadR8Task.kt +++ b/gr8-plugin-common/src/main/kotlin/com/gradleup/gr8/DownloadR8Task.kt @@ -1,10 +1,11 @@ package com.gradleup.gr8 import org.gradle.api.DefaultTask -import org.gradle.api.file.RegularFileProperty +import org.gradle.api.file.DirectoryProperty import org.gradle.api.provider.Property import org.gradle.api.tasks.CacheableTask import org.gradle.api.tasks.Input +import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.OutputFile import org.gradle.api.tasks.TaskAction import java.net.URI @@ -14,18 +15,28 @@ abstract class DownloadR8Task : DefaultTask() { @get:Input abstract val sha1: Property - @get:OutputFile - abstract val outputFile: RegularFileProperty + @get:OutputDirectory + abstract val outputDir: DirectoryProperty @TaskAction fun taskAction() { - if (outputFile.get().asFile.exists()) { + val outputFile = outputDir.get().asFile.resolve("${sha1.get()}.jar") + outputDir.get().asFile.listFiles()!!.forEach { + /** + * Delete stale files + */ + if (it != outputFile) { + it.delete() + } + } + if (outputFile.exists()) { + // Already present, save some work return } val url = "https://storage.googleapis.com/r8-releases/raw/main/${sha1.get()}/r8.jar" URI(url).toURL().openStream().buffered().use { inputStream -> - outputFile.get().asFile.outputStream().use { outputStream -> + outputFile.outputStream().use { outputStream -> inputStream.copyTo(outputStream) } } diff --git a/gr8-plugin-common/src/main/kotlin/com/gradleup/gr8/Gr8Configurator.kt b/gr8-plugin-common/src/main/kotlin/com/gradleup/gr8/Gr8Configurator.kt index c2589c9..eb20806 100644 --- a/gr8-plugin-common/src/main/kotlin/com/gradleup/gr8/Gr8Configurator.kt +++ b/gr8-plugin-common/src/main/kotlin/com/gradleup/gr8/Gr8Configurator.kt @@ -147,7 +147,9 @@ open class Gr8Configurator( */ project.tasks.register("gr8${upperCaseName}Download", DownloadR8Task::class.java) { it.sha1.set(r8Version) - it.outputFile.set(buildDir.resolve("r8/$r8Version.jar")) + it.outputDir.set(buildDir.resolve("r8")) + }.map { + it.outputDir.get().asFile.listFiles()?.singleOrNull() ?: throw IllegalStateException("Expected single R8 jar file in output directory") } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3b1b6d4..53c3e6a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [libraries] gradle-api = "dev.gradleplugins:gradle-api:7.3" # for ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE -librarian = "com.gradleup.librarian:librarian-gradle-plugin:0.0.8-SNAPSHOT-ba3e33fb6601dae9ea75e1ef75aa9b46bf640b74" -gr8-published = "com.gradleup:gr8-plugin:0.11.0-SNAPSHOT-ac9451b86ec13bc59a090a38585fa20b88eb072e" +librarian = "com.gradleup.librarian:librarian-gradle-plugin:0.0.8" +gr8-published = "com.gradleup:gr8-plugin:0.11.0" gradle-publish = "com.gradle.publish:plugin-publish-plugin:0.15.0" kgp = "org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.20" vespene = "net.mbonnin.vespene:vespene-lib:0.6.1" diff --git a/librarian.root.properties b/librarian.root.properties index a31854e..e66d757 100644 --- a/librarian.root.properties +++ b/librarian.root.properties @@ -3,8 +3,6 @@ kotlin.compatibility=1.9.0 kdoc.olderVersions= -sonatype.backend=Default - pom.groupId=com.gradleup pom.version=0.11.3-SNAPSHOT pom.description=Gradle + R8 = <3 diff --git a/test-plugin/build.gradle.kts b/test-plugin/build.gradle.kts index 2dab62a..ace3aa3 100644 --- a/test-plugin/build.gradle.kts +++ b/test-plugin/build.gradle.kts @@ -35,7 +35,7 @@ gr8 { proguardFile("rules.pro") - r8Version("887704078a06fc0090e7772c921a30602bf1a49f") + r8Version("97951e94471814d3148bfb1ff0a4617f1781a1fe") systemClassesToolchain { languageVersion.set(JavaLanguageVersion.of(11)) }