From b54126b30e78defd88c28b18c090350990b85e84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Launay?= Date: Tue, 15 Feb 2011 14:35:04 +0100 Subject: [PATCH] GRAILS-6800 transitive dependency of plugin is not evicted by direct project dependency - use ConfigurationResolveReport#getArtifactsReports(DownloadStatus downloadStatus, boolean withEvicted) instead of ConfigurationResolveReport#getAllArtifactsReports() to prevent retrieval of evicted artefacts - remove redundant dependencies resolving for plugins in grails war besides this partial resolve was not able to determine global evicted dependencies --- scripts/_GrailsWar.groovy | 14 +------------- src/java/grails/util/BuildSettings.groovy | 10 +++++----- .../grails/resolve/PluginInstallEngine.groovy | 6 +++--- .../grails/resolve/PluginResolveEngine.groovy | 10 +++++----- 4 files changed, 14 insertions(+), 26 deletions(-) diff --git a/scripts/_GrailsWar.groovy b/scripts/_GrailsWar.groovy index b99889338ab..c019d3d8697 100644 --- a/scripts/_GrailsWar.groovy +++ b/scripts/_GrailsWar.groovy @@ -209,6 +209,7 @@ target (war: "The implementation target") { if (includeJars) { if (pluginInfos) { def libDir = "${stagingDir}/WEB-INF/lib" + // Copy embedded libs (dependencies declared inside dependencies.groovy are already provided) ant.copy(todir:libDir, flatten:true, failonerror:false, preservelastmodified:true) { for (GrailsPluginInfo info in pluginInfos) { fileset(dir: info.pluginDir.file.path) { @@ -216,19 +217,6 @@ target (war: "The implementation target") { } } } - - for(GrailsPluginInfo info in pluginInfos) { - IvyDependencyManager freshManager = new IvyDependencyManager(info.name, info.version) - freshManager.parseDependencies {} - freshManager.chainResolver = grailsSettings.dependencyManager.chainResolver - grailsSettings.pluginDependencyHandler(freshManager).call(info.pluginDir.file.canonicalFile) - for(File file in freshManager.resolveDependencies("runtime").allArtifactsReports.localFile) { - if(file) { - ant.copy(file:file, todir:libDir) - } - } - - } } } diff --git a/src/java/grails/util/BuildSettings.groovy b/src/java/grails/util/BuildSettings.groovy index 1ee45ea5672..028e624f4ff 100644 --- a/src/java/grails/util/BuildSettings.groovy +++ b/src/java/grails/util/BuildSettings.groovy @@ -309,7 +309,7 @@ class BuildSettings extends AbstractBuildSettings { Message.info "Resolving [compile] dependencies..." def jarFiles = dependencyManager .resolveDependencies(IvyDependencyManager.COMPILE_CONFIGURATION) - .allArtifactsReports + .getArtifactsReports(null, false) .localFile + applicationJars Message.debug("Resolved jars for [compile]: ${{->jarFiles.join('\n')}}") resolveCache['compile'] = jarFiles @@ -341,7 +341,7 @@ class BuildSettings extends AbstractBuildSettings { Message.info "Resolving [test] dependencies..." def jarFiles = dependencyManager .resolveDependencies(IvyDependencyManager.TEST_CONFIGURATION) - .allArtifactsReports + .getArtifactsReports(null, false) .localFile + applicationJars Message.debug("Resolved jars for [test]: ${{->jarFiles.join('\n')}}") resolveCache['test'] = jarFiles @@ -373,7 +373,7 @@ class BuildSettings extends AbstractBuildSettings { Message.info "Resolving [runtime] dependencies..." def jarFiles = dependencyManager .resolveDependencies(IvyDependencyManager.RUNTIME_CONFIGURATION) - .allArtifactsReports + .getArtifactsReports(null, false) .localFile + applicationJars Message.debug("Resolved jars for [runtime]: ${{->jarFiles.join('\n')}}") resolveCache['runtime'] = jarFiles @@ -408,7 +408,7 @@ class BuildSettings extends AbstractBuildSettings { Message.info "Resolving [provided] dependencies..." def jarFiles = dependencyManager .resolveDependencies(IvyDependencyManager.PROVIDED_CONFIGURATION) - .allArtifactsReports + .getArtifactsReports(null, false) .localFile Message.debug("Resolved jars for [provided]: ${{->jarFiles.join('\n')}}") @@ -447,7 +447,7 @@ class BuildSettings extends AbstractBuildSettings { Message.info "Resolving [build] dependencies..." def jarFiles = dependencyManager .resolveDependencies(IvyDependencyManager.BUILD_CONFIGURATION) - .allArtifactsReports + .getArtifactsReports(null, false) .localFile + applicationJars Message.debug("Resolved jars for [build]: ${{->jarFiles.join('\n')}}") diff --git a/src/java/org/codehaus/groovy/grails/resolve/PluginInstallEngine.groovy b/src/java/org/codehaus/groovy/grails/resolve/PluginInstallEngine.groovy index c647bf50021..59db6493ee6 100644 --- a/src/java/org/codehaus/groovy/grails/resolve/PluginInstallEngine.groovy +++ b/src/java/org/codehaus/groovy/grails/resolve/PluginInstallEngine.groovy @@ -120,7 +120,7 @@ class PluginInstallEngine { errorHandler "Failed to resolve plugins." } else { - for (ArtifactDownloadReport ar in report.allArtifactsReports) { + for (ArtifactDownloadReport ar in report.getArtifactsReports(null, false)) { def arName = ar.artifact.moduleRevisionId.name if (plugins.any { it.name == arName }) { installPlugin ar.localFile @@ -363,7 +363,7 @@ You cannot upgrade a plugin that is configured via BuildConfig.groovy, remove th errorHandler("Failed to install plugin [${pluginName}]. Plugin has missing JAR dependencies.") } else { - addJarsToRootLoader resolveReport.allArtifactsReports.localFile + addJarsToRootLoader resolveReport.getArtifactsReports(null, false).localFile } } } @@ -540,7 +540,7 @@ You cannot upgrade a plugin that is configured via BuildConfig.groovy, remove th private void resolveDependenciesAgain() { for (type in ['compile', 'build', 'test', 'runtime']) { def existing = settings."${type}Dependencies" - def all = settings.dependencyManager.resolveDependencies(IvyDependencyManager."${type.toUpperCase()}_CONFIGURATION").allArtifactsReports.localFile + def all = settings.dependencyManager.resolveDependencies(IvyDependencyManager."${type.toUpperCase()}_CONFIGURATION").getArtifactsReports(null, false).localFile def toAdd = all - existing if (toAdd) { existing.addAll(toAdd) diff --git a/src/java/org/codehaus/groovy/grails/resolve/PluginResolveEngine.groovy b/src/java/org/codehaus/groovy/grails/resolve/PluginResolveEngine.groovy index 93dc7ee246e..d217d06cb85 100644 --- a/src/java/org/codehaus/groovy/grails/resolve/PluginResolveEngine.groovy +++ b/src/java/org/codehaus/groovy/grails/resolve/PluginResolveEngine.groovy @@ -95,7 +95,7 @@ final class PluginResolveEngine { return null } - def reports = report.allArtifactsReports + def reports = report.getArtifactsReports(null, false) def artifactReport = reports.find { it.artifact.attributes.organisation == resolveArgs.group && it.artifact.name == resolveArgs.name && (pluginVersion == null || it.artifact.moduleRevisionId.revision == pluginVersion) } if(artifactReport == null) { artifactReport = reports.find { it.artifact.name == pluginName && (pluginVersion == null || it.artifact.moduleRevisionId.revision == pluginVersion) } @@ -132,8 +132,8 @@ final class PluginResolveEngine { } } def report = dependencyManager.resolvePluginDependencies('runtime', [download:false]) - if (!report.hasError() && report.allArtifactsReports) { - ArtifactOrigin origin = report.allArtifactsReports.origin.first() + if (!report.hasError() && report.getArtifactsReports(null, false)) { + ArtifactOrigin origin = report.getArtifactsReports(null, false).origin.first() def location = origin.location def parent = location[0..location.lastIndexOf('/')-1] for (DependencyResolver dr in dependencyManager.chainResolver.resolvers) { @@ -172,11 +172,11 @@ final class PluginResolveEngine { report = dependencyManager.resolvePluginDependencies() - if (report.hasError() || !report.allArtifactsReports) { + if (report.hasError() || !report.getArtifactsReports(null, false)) { return null } - return new XmlSlurper().parse(report.allArtifactsReports.localFile.first()) + return new XmlSlurper().parse(report.getArtifactsReports(null, false).localFile.first()) } } }