Build: Introduce resolveDependencies task
It is used on the build server to pre-download all dependencies and check that verification-metadata.xml is up-to-date #KTI-72
This commit is contained in:
committed by
Space Team
parent
7c1ffc4eb2
commit
01b6af452f
+6
-5
@@ -95,6 +95,7 @@ rootProject.apply {
|
|||||||
from(rootProject.file("gradle/retryPublishing.gradle.kts"))
|
from(rootProject.file("gradle/retryPublishing.gradle.kts"))
|
||||||
from(rootProject.file("gradle/modularizedTestConfigurations.gradle.kts"))
|
from(rootProject.file("gradle/modularizedTestConfigurations.gradle.kts"))
|
||||||
from(rootProject.file("gradle/ideaRtHack.gradle.kts"))
|
from(rootProject.file("gradle/ideaRtHack.gradle.kts"))
|
||||||
|
from(rootProject.file("gradle/resolveDependencies.gradle.kts"))
|
||||||
}
|
}
|
||||||
|
|
||||||
IdeVersionConfigurator.setCurrentIde(project)
|
IdeVersionConfigurator.setCurrentIde(project)
|
||||||
@@ -168,11 +169,11 @@ val firCompilerCoreModules = arrayOf(
|
|||||||
).also { extra["firCompilerCoreModules"] = it }
|
).also { extra["firCompilerCoreModules"] = it }
|
||||||
|
|
||||||
val firAllCompilerModules = firCompilerCoreModules +
|
val firAllCompilerModules = firCompilerCoreModules +
|
||||||
arrayOf(
|
arrayOf(
|
||||||
":compiler:fir:raw-fir:light-tree2fir",
|
":compiler:fir:raw-fir:light-tree2fir",
|
||||||
":compiler:fir:analysis-tests",
|
":compiler:fir:analysis-tests",
|
||||||
":compiler:fir:analysis-tests:legacy-fir-tests"
|
":compiler:fir:analysis-tests:legacy-fir-tests"
|
||||||
)
|
)
|
||||||
|
|
||||||
val fe10CompilerModules = arrayOf(
|
val fe10CompilerModules = arrayOf(
|
||||||
":compiler",
|
":compiler",
|
||||||
|
|||||||
@@ -0,0 +1,76 @@
|
|||||||
|
import java.net.URI
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.d8.D8RootExtension
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension
|
||||||
|
import org.spdx.sbom.gradle.SpdxSbomExtension
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When called with `--write-verification-metadata` resolves all build dependencies including implicit dependecies for all platforms and
|
||||||
|
* dependencies downloaded by plugins. Usefull to populate Gradle dependency cache or update `verification-metadata.xml` properly.
|
||||||
|
*
|
||||||
|
* `./gradlew resolveDependencies --write-verification-metadata md5,sha256`
|
||||||
|
*/
|
||||||
|
tasks.register("resolveDependencies") {
|
||||||
|
doFirst {
|
||||||
|
allprojects {
|
||||||
|
logger.info("Resolving dependencies in $this")
|
||||||
|
|
||||||
|
// resolve implicit dependencies one by one to avoid conflicts between them
|
||||||
|
configurations.implicitDependencies.get().allDependencies.forEach { implicitDependency ->
|
||||||
|
configurations.detachedConfiguration(implicitDependency).resolve()
|
||||||
|
}
|
||||||
|
|
||||||
|
plugins.withId("java-base") {
|
||||||
|
val service = project.extensions.getByType<JavaToolchainService>()
|
||||||
|
val javaExtension = extensions.getByType<JavaPluginExtension>()
|
||||||
|
service.compilerFor(javaExtension.toolchain).get()
|
||||||
|
}
|
||||||
|
|
||||||
|
project.extensions.findByType<SpdxSbomExtension>()?.run {
|
||||||
|
targets.forEach { target ->
|
||||||
|
target.configurations.get().forEach { configurationName ->
|
||||||
|
val pomDependencies = project.configurations[configurationName].incoming.resolutionResult.allComponents
|
||||||
|
.map { it.id }
|
||||||
|
.filterIsInstance<ModuleComponentIdentifier>()
|
||||||
|
.map { project.dependencies.create(it.displayName + "@pom") }
|
||||||
|
|
||||||
|
project.configurations.detachedConfiguration(*pomDependencies.toTypedArray()).resolve()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Project.resolveDependencies(
|
||||||
|
vararg dependency: String,
|
||||||
|
repositoryHandler: (RepositoryHandler.() -> ArtifactRepository)? = null
|
||||||
|
) {
|
||||||
|
val repo = repositoryHandler?.let { repositories.repositoryHandler() }
|
||||||
|
dependency.forEach {
|
||||||
|
configurations.detachedConfiguration(dependencies.create(it)).resolve()
|
||||||
|
}
|
||||||
|
repo?.run { repositories.remove(this) }
|
||||||
|
}
|
||||||
|
|
||||||
|
rootProject.extensions.findByType<D8RootExtension>()?.run {
|
||||||
|
project.resolveDependencies(
|
||||||
|
"google.d8:v8:linux64-rel-$version@zip",
|
||||||
|
"google.d8:v8:win64-rel-$version@zip",
|
||||||
|
"google.d8:v8:mac-arm64-rel-$version@zip",
|
||||||
|
"google.d8:v8:mac64-rel-$version@zip"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
rootProject.extensions.findByType<YarnRootExtension>()?.run {
|
||||||
|
project.resolveDependencies("com.yarnpkg:yarn:$version@tar.gz") {
|
||||||
|
ivy {
|
||||||
|
url = URI(downloadBaseUrl)
|
||||||
|
patternLayout {
|
||||||
|
artifact("v[revision]/[artifact](-v[revision]).[ext]")
|
||||||
|
}
|
||||||
|
metadataSources { artifact() }
|
||||||
|
content { includeModule("com.yarnpkg", "yarn") }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user