mirror of
https://github.com/tadfisher/gradle2nix.git
synced 2026-01-11 07:20:39 -05:00
plugin: Support repositories in dependencyResolutionManagement block
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
plugins {
|
||||
java
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation("org.apache:test:1.0.0")
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
dependencyResolutionManagement {
|
||||
repositories {
|
||||
maven { url = uri("http://localhost:9999") }
|
||||
}
|
||||
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
|
||||
}
|
||||
7617
gradle-env.json
7617
gradle-env.json
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,7 @@
|
||||
package org.nixos.gradle2nix
|
||||
|
||||
import dev.minutest.Tests
|
||||
import dev.minutest.experimental.minus
|
||||
import dev.minutest.junit.JUnit5Minutests
|
||||
import dev.minutest.rootContext
|
||||
import dev.minutest.test
|
||||
@@ -11,14 +12,25 @@ class SettingsTest : JUnit5Minutests {
|
||||
@Tests
|
||||
fun tests() = rootContext("settings tests") {
|
||||
withRepository("m2") {
|
||||
|
||||
withFixture("settings/buildscript") {
|
||||
test("resolves settings plugin in buildscript classpath") {
|
||||
expectThat(build()) {
|
||||
get("settings dependencies") { settingsDependencies }.ids
|
||||
.containsExactly(
|
||||
"org.apache:test:1.0.0@jar",
|
||||
"org.apache:test:1.0.0@pom"
|
||||
)
|
||||
get("settings dependencies") { settingsDependencies }.ids.containsExactly(
|
||||
"org.apache:test:1.0.0@jar",
|
||||
"org.apache:test:1.0.0@pom"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
withFixture("settings/dependency-resolution-management") {
|
||||
GRADLE_MIN("6.8") - test("uses repositories from settings script") {
|
||||
expectThat(build()) {
|
||||
get("root project dependencies") { rootProject.projectDependencies }.ids.containsExactly(
|
||||
"org.apache:test:1.0.0@jar",
|
||||
"org.apache:test:1.0.0@pom"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ enum class ConfigurationScope {
|
||||
internal class ConfigurationResolverFactory(
|
||||
project: Project,
|
||||
scope: ConfigurationScope,
|
||||
repositories: RepositoryHandler
|
||||
repositories: List<ResolutionAwareRepository>
|
||||
) {
|
||||
private val ivySettings = IvySettings().apply {
|
||||
defaultInit()
|
||||
@@ -49,7 +49,6 @@ internal class ConfigurationResolverFactory(
|
||||
}
|
||||
|
||||
private val resolvers = repositories
|
||||
.filterIsInstance<ResolutionAwareRepository>()
|
||||
.filterNot { it.createResolver().isLocal }
|
||||
.mapNotNull { it.repositoryResolver(project, scope, ivySettings) }
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import org.gradle.api.Task
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.artifacts.ProjectDependency
|
||||
import org.gradle.api.internal.GradleInternal
|
||||
import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository
|
||||
import org.gradle.api.invocation.Gradle
|
||||
import org.gradle.api.tasks.TaskContainer
|
||||
import org.gradle.api.tasks.wrapper.Wrapper
|
||||
@@ -132,7 +133,11 @@ private fun Project.buildGradle(): DefaultGradle =
|
||||
private fun Project.settingsDependencies(): List<DefaultArtifact> {
|
||||
val buildscript = (gradle as GradleInternal).settings.buildscript
|
||||
|
||||
val resolverFactory = ConfigurationResolverFactory(this, ConfigurationScope.SETTINGS, buildscript.repositories)
|
||||
val resolverFactory = ConfigurationResolverFactory(
|
||||
this,
|
||||
ConfigurationScope.SETTINGS,
|
||||
buildscript.repositories.filterIsInstance<ResolutionAwareRepository>()
|
||||
)
|
||||
val resolver = resolverFactory.create(buildscript.dependencies)
|
||||
|
||||
logger.lifecycle(" Settings script")
|
||||
@@ -208,7 +213,11 @@ private fun Project.buildProject(
|
||||
private fun Project.buildscriptDependencies(
|
||||
pluginArtifacts: List<DefaultArtifact>
|
||||
): Pair<List<DefaultArtifact>, List<ArtifactIdentifier>> {
|
||||
val resolverFactory = ConfigurationResolverFactory(this, ConfigurationScope.BUILDSCRIPT, buildscript.repositories)
|
||||
val resolverFactory = ConfigurationResolverFactory(
|
||||
this,
|
||||
ConfigurationScope.BUILDSCRIPT,
|
||||
buildscript.repositories.filterIsInstance<ResolutionAwareRepository>()
|
||||
)
|
||||
val resolver = resolverFactory.create(buildscript.dependencies)
|
||||
val pluginIds = pluginArtifacts.map(DefaultArtifact::id)
|
||||
return buildscript.configurations
|
||||
@@ -221,8 +230,11 @@ private fun Project.buildscriptDependencies(
|
||||
private fun Project.projectDependencies(
|
||||
explicitConfigurations: List<String>
|
||||
): Pair<List<DefaultArtifact>, List<ArtifactIdentifier>> {
|
||||
val resolverFactory = ConfigurationResolverFactory(this, ConfigurationScope.PROJECT, repositories)
|
||||
val resolver = resolverFactory.create(dependencies)
|
||||
val resolver = ConfigurationResolverFactory(
|
||||
this,
|
||||
ConfigurationScope.PROJECT,
|
||||
RepositoriesCollector.create(project).collectRepositories()
|
||||
).create(dependencies)
|
||||
return collectConfigurations(explicitConfigurations)
|
||||
.flatMap(resolver::resolve)
|
||||
.distinct()
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nixos.gradle2nix
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository
|
||||
import org.gradle.plugin.management.PluginRequest
|
||||
import org.gradle.plugin.use.internal.PluginDependencyResolutionServices
|
||||
import javax.inject.Inject
|
||||
@@ -14,7 +15,7 @@ internal open class PluginResolver @Inject constructor(
|
||||
private val resolver = ConfigurationResolverFactory(
|
||||
project,
|
||||
ConfigurationScope.PLUGIN,
|
||||
pluginDependencyResolutionServices.resolveRepositoryHandler
|
||||
pluginDependencyResolutionServices.resolveRepositoryHandler.filterIsInstance<ResolutionAwareRepository>()
|
||||
).create(pluginDependencyResolutionServices.dependencyHandler)
|
||||
|
||||
fun resolve(pluginRequests: List<PluginRequest>): List<DefaultArtifact> {
|
||||
@@ -28,4 +29,3 @@ internal open class PluginResolver @Inject constructor(
|
||||
return resolver.resolve(configurations.detachedConfiguration(*markerDependencies.toTypedArray()))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package org.nixos.gradle2nix
|
||||
|
||||
import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.dsl.RepositoryHandler
|
||||
import org.gradle.api.initialization.dsl.ScriptHandler
|
||||
import org.gradle.api.internal.artifacts.RepositoriesSupplier
|
||||
import org.gradle.kotlin.dsl.newInstance
|
||||
import org.gradle.util.GradleVersion
|
||||
import javax.inject.Inject
|
||||
|
||||
interface RepositoriesCollector {
|
||||
fun collectRepositories(): List<ResolutionAwareRepository>
|
||||
|
||||
companion object {
|
||||
fun create(project: Project): RepositoriesCollector =
|
||||
if (GradleVersion.current() >= GradleVersion.version("6.8")) {
|
||||
project.objects.newInstance<RepositoriesCollector68>()
|
||||
} else {
|
||||
project.objects.newInstance<RepositoriesCollectorBase>()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
open class RepositoriesCollectorBase @Inject constructor(
|
||||
private val repositories: RepositoryHandler
|
||||
): RepositoriesCollector {
|
||||
override fun collectRepositories(): List<ResolutionAwareRepository> =
|
||||
repositories.filterIsInstance<ResolutionAwareRepository>()
|
||||
}
|
||||
|
||||
open class RepositoriesCollector68 @Inject constructor(
|
||||
private val repositoriesSupplier: RepositoriesSupplier
|
||||
): RepositoriesCollector {
|
||||
override fun collectRepositories(): List<ResolutionAwareRepository> =
|
||||
repositoriesSupplier.get()
|
||||
}
|
||||
Reference in New Issue
Block a user