11package dev.poolside.gradle.semanticversion
22
3- import org.gradle.api.Project
3+ import org.gradle.api.internal.artifacts.DependencyManagementServices
44import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ConfiguredModuleComponentRepository
55import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.DefaultVersionComparator
66import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.Version
77import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.VersionParser
8+ import org.gradle.api.internal.initialization.StandaloneDomainObjectContext
89import org.gradle.api.logging.Logger
910import org.gradle.api.publish.maven.MavenPublication
1011import org.gradle.internal.component.external.model.DefaultModuleComponentSelector
1112import org.gradle.internal.component.external.model.GradleDependencyMetadata
1213import org.gradle.internal.resolve.result.DefaultBuildableModuleVersionListingResolveResult
1314import org.gradle.kotlin.dsl.create
14- import java.util.Collections
15+ import java.util.*
1516
1617object VersionFinder {
1718
1819 private val versionParser = VersionParser ()
1920 private val versionComparator = DefaultVersionComparator ().asVersionComparator()
2021
21- fun findVersion (logger : Logger , project : Project , resolver : ConfiguredModuleComponentRepository , publication : MavenPublication ): Pair <String , String > {
22- val versions = listVersions(logger, project , resolver, publication, " ${publication.version} +" )
22+ fun findVersion (logger : Logger , dependencyService : DependencyManagementServices , resolver : ConfiguredModuleComponentRepository , publication : MavenPublication ): Pair <String , String > {
23+ val versions = listVersions(logger, dependencyService , resolver, publication, " ${publication.version} +" )
2324 var latestVersion: Version ? = null
2425 versions.map { version -> versionParser.transform(version) }.forEach { version ->
2526 if (latestVersion == null || versionComparator.compare(version, latestVersion) > 0 ) {
@@ -39,16 +40,17 @@ object VersionFinder {
3940 return " ${publication.groupId} :${publication.artifactId} " to version
4041 }
4142
42- fun versionExists (logger : Logger , project : Project , resolver : ConfiguredModuleComponentRepository , publication : MavenPublication ): Boolean {
43- val versions = listVersions(logger, project , resolver, publication, publication.version)
43+ fun versionExists (logger : Logger , dependencyService : DependencyManagementServices , resolver : ConfiguredModuleComponentRepository , publication : MavenPublication ): Boolean {
44+ val versions = listVersions(logger, dependencyService , resolver, publication, publication.version)
4445 return versions.contains(publication.version)
4546 }
4647
47- private fun listVersions (logger : Logger , project : Project , resolver : ConfiguredModuleComponentRepository , publication : MavenPublication , versionSearch : String ): Set <String > {
48+ private fun listVersions (logger : Logger , dependencyService : DependencyManagementServices , resolver : ConfiguredModuleComponentRepository , publication : MavenPublication , versionSearch : String ): Set <String > {
4849 val remote = resolver.remoteAccess
4950 val local = resolver.localAccess
5051
51- val dep = project.dependencies.create(group = publication.groupId, name = publication.artifactId, version = versionSearch)
52+ val handler = dependencyService.newDetachedResolver(StandaloneDomainObjectContext .ANONYMOUS ).dependencyHandler
53+ val dep = handler.create(group = publication.groupId, name = publication.artifactId, version = versionSearch)
5254 val selector = DefaultModuleComponentSelector .newSelector(dep.module, dep.versionConstraint)
5355 val metadata = GradleDependencyMetadata (selector, Collections .emptyList(), false , false , null , false , null )
5456
0 commit comments