@@ -20,6 +20,7 @@ import org.gradle.api.artifacts.*
2020import org.gradle.api.artifacts.component.ComponentSelector
2121import org.gradle.api.artifacts.component.ModuleComponentIdentifier
2222import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.DefaultVersionComparator
23+ import org.gradle.api.specs.Specs
2324import org.joda.time.DateTime
2425import org.joda.time.DateTimeZone
2526
@@ -209,20 +210,23 @@ class AlignRules implements ProjectConfigurationRule {
209210 return
210211 }
211212
212- def detached = configuration. copyRecursive()
213- detached . exclude group : project. group, module : project. name
213+ def copy = configuration. copyRecursive()
214+ copy . exclude group : project. group, module : project. name
214215 def artifacts
215- if (detached. resolvedConfiguration. hasError()) {
216- project. logger. info(' Cannot resolve all dependencies to align' )
217- artifacts = detached. resolvedConfiguration. lenientConfiguration. getArtifacts()
216+ def resolvedConfiguration = copy. resolvedConfiguration
217+ if (resolvedConfiguration. hasError()) {
218+ def lenientConfiguration = resolvedConfiguration. lenientConfiguration
219+ project. logger. info(" Cannot resolve all dependencies to align, configuration '${ configuration.name} ' should also fail to resolve" )
220+ artifacts = lenientConfiguration. getArtifacts(Specs . SATISFIES_ALL )
218221 } else {
219- artifacts = detached . resolvedConfiguration. resolvedArtifacts. collect { it . moduleVersion }
222+ artifacts = resolvedConfiguration. resolvedArtifacts
220223 }
221224
225+ def moduleVersions = artifacts. collect { it. moduleVersion }
222226 def selectedVersion = [:]
223227 aligns. each { AlignRule align ->
224228 if (align. shouldNotBeSkipped(extension)) {
225- def matches = artifacts . findAll { ResolvedModuleVersion dep -> align. resolvedMatches(dep) }
229+ def matches = moduleVersions . findAll { ResolvedModuleVersion dep -> align. resolvedMatches(dep) }
226230 def versions = matches. collect { ResolvedModuleVersion dep -> dep. id. version }. toUnique()
227231 def comparator = new DefaultVersionComparator (). asStringComparator()
228232 def alignedVersion = versions. max { a , b -> comparator. compare(a, b) }
0 commit comments