Download d8 using configuration to make use of Gradle dependency caching
#KTI-72
This commit is contained in:
committed by
Space Team
parent
638cbd4d8e
commit
5e39bb97a0
+2
-1
@@ -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
|
||||
)
|
||||
+2
-1
@@ -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"
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+21
-6
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user