Download d8 using configuration to make use of Gradle dependency caching

#KTI-72
This commit is contained in:
Vyacheslav Gerasimov
2023-05-15 12:26:21 +02:00
committed by Space Team
parent 638cbd4d8e
commit 5e39bb97a0
4 changed files with 37 additions and 8 deletions
+12
View File
@@ -2654,6 +2654,18 @@
<sha256 value="39493c1da24d9f5f160cc3fb6670b9cad023e65ce12a6673af32e47ddcdeb8c3" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="google.d8" name="v8" version="linux64-rel-11.5.99">
<artifact name="v8-linux64-rel-11.5.99.zip">
<md5 value="c929047b03bf3ddeeffbe7d66c4b83b6" origin="Generated by Gradle"/>
<sha256 value="80a2e94cc3606e978dc84516520d75a912c7a9b6d9fab4d520441db384ac34fc" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="google.d8" name="v8" version="win64-rel-11.5.99">
<artifact name="v8-win64-rel-11.5.99.zip">
<md5 value="1f5984db3f35be3231dffaf7d64ff4e9" origin="Generated by Gradle"/>
<sha256 value="edd5199cd6fb8bdf5798a1d108bd7b85da11ba72c28702bb96181212825404bb" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="gradle.plugin.com.github.johnrengelman" name="shadow" version="7.1.2">
<artifact name="shadow-7.1.2.jar">
<md5 value="0e152cbfd964889d83033c1071488e31" origin="Generated by Gradle"/>
@@ -10,5 +10,6 @@ data class D8Env(
val targetPath: File,
val executablePath: File,
val isWindows: Boolean,
val downloadUrl: URL
val downloadUrl: URL,
val ivyDependency: String
)
@@ -60,7 +60,8 @@ open class D8RootExtension(@Transient val rootProject: Project) : ConfigurationP
targetPath = targetPath,
executablePath = targetPath.resolve(if (isWindows) "d8.exe" else "d8"),
isWindows = isWindows,
downloadUrl = URL("${downloadBaseUrl.trimEnd('/')}/$requiredZipName"),
downloadUrl = URL(downloadBaseUrl),
ivyDependency = "google.d8:v8:${D8Platform.platform}-$edition-$version@zip"
)
}
@@ -5,16 +5,17 @@
package org.jetbrains.kotlin.gradle.targets.js.d8
import de.undercouch.gradle.tasks.download.Download
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.plugins.BasePlugin
import org.gradle.api.tasks.Copy
import org.jetbrains.kotlin.gradle.plugin.whenEvaluated
import org.jetbrains.kotlin.gradle.targets.js.MultiplePluginDeclarationDetector
import org.jetbrains.kotlin.gradle.targets.js.d8.D8RootExtension.Companion.EXTENSION_NAME
import org.jetbrains.kotlin.gradle.tasks.CleanDataTask
import org.jetbrains.kotlin.gradle.tasks.registerTask
open class D8RootPlugin : Plugin<Project> {
override fun apply(project: Project) {
MultiplePluginDeclarationDetector.detect(project)
@@ -27,13 +28,27 @@ open class D8RootPlugin : Plugin<Project> {
val settings = project.extensions.create(EXTENSION_NAME, D8RootExtension::class.java, project)
val downloadTask = project.registerTask<Download>("${TASKS_GROUP_NAME}Download") {
val env = settings.requireConfigured()
project.gradle.projectsEvaluated {
val downloadUrl = settings.requireConfigured().downloadUrl
project.repositories.ivy { repo ->
repo.name = "D8 Distributions at $downloadUrl"
repo.url = downloadUrl.toURI()
repo.patternLayout {
it.artifact("[artifact]-[revision].[ext]")
}
repo.metadataSources { it.artifact() }
repo.content { it.includeModule("google.d8", "v8") }
}
}
val downloadTask = project.registerTask<Copy>("${TASKS_GROUP_NAME}Download") {
it.group = TASKS_GROUP_NAME
it.src(env.downloadUrl)
it.dest(env.zipPath)
it.overwrite(false)
it.description = "Download local d8 version"
val env = settings.requireConfigured()
val configuration = project.configurations.detachedConfiguration(project.dependencies.create(env.ivyDependency))
it.from(project.provider { configuration.singleFile })
it.into(env.zipPath.parentFile)
}
project.registerTask<Copy>(INSTALL_TASK_NAME) {