Skip to content

Commit

Permalink
Resolve griffon plugin dependencies as late as possible. Fixes #155
Browse files Browse the repository at this point in the history
  • Loading branch information
aalmiray committed Jun 19, 2016
1 parent fd51be2 commit 0101570
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,7 @@ class GriffonPlugin implements Plugin<Project> {
}

private void applyDefaultDependencies(final Project project) {
project.configurations.maybeCreate('griffon').visible = true
GriffonPluginResolutionStrategy.applyTo(project)
project.configurations.maybeCreate('griffon').visible = false
}

private void applyDefaultPlugins(Project project) {
Expand Down Expand Up @@ -211,7 +210,7 @@ class GriffonPlugin implements Plugin<Project> {
project.repositories.maven { url 'http://dl.bintray.com/griffon/griffon-plugins' }
}

// add default dependencies
// add default core dependencies
appendDependency('core')
appendDependency('core-compile')
appendDependency('core-test')
Expand All @@ -234,6 +233,8 @@ class GriffonPlugin implements Plugin<Project> {
maybeIncludeGroovyDependency(groovyDependenciesEnabled, 'groovy')
maybeIncludeGroovyDependency(groovyDependenciesEnabled, 'groovy-compile')

GriffonPluginResolutionStrategy.applyTo(project)

processMainResources(project, extension)
processTestResources(project, extension)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,14 @@
package org.codehaus.griffon.gradle

import org.gradle.api.Action
import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.Configuration
import org.gradle.api.artifacts.Dependency
import org.gradle.api.artifacts.Dependency
import org.gradle.api.artifacts.ResolvableDependencies
import org.gradle.api.artifacts.ResolvableDependencies

/**
Expand All @@ -36,42 +41,25 @@ class GriffonPluginResolutionStrategy {
'runtime'
]

private static final Map<String, List<String>> DEPENDENCY_MAP = [:]

static void applyTo(Project project) {
GriffonPluginDependencyResolver resolver = new GriffonPluginDependencyResolver(project)
project.configurations.getByName(GRIFFON_CONFIGURATION).incoming.beforeResolve(resolver)
CONFIGURATION_NAMES.each { String configurationName ->
Configuration configuration = project.configurations.getByName(configurationName)
configuration.incoming.beforeResolve(new GriffonDependencyResolver(configurationName, resolver))
}
}

private static class GriffonDependencyResolver implements Action<ResolvableDependencies> {
private final GriffonPluginDependencyResolver resolver
private final String configurationName
Configuration griffonConfiguration = project.configurations.getByName(GRIFFON_CONFIGURATION)
griffonConfiguration.incoming.beforeResolve(resolver)
griffonConfiguration.resolve()

GriffonDependencyResolver(String configurationName, GriffonPluginDependencyResolver resolver) {
this.resolver = resolver
this.configurationName = configurationName
}

@Override
void execute(ResolvableDependencies resolvableDependencies) {
if (resolver.project.extensions.getByName(GRIFFON_CONFIGURATION).disableDependencyResolution) {
return
}

if (!resolver.dependencyMap) {
resolver.project.configurations.getByName(GRIFFON_CONFIGURATION).resolve()
}
resolver.dependencyMap[configurationName].each { String dependency ->
CONFIGURATION_NAMES.each { String configurationName ->
DEPENDENCY_MAP[configurationName].each { String dependency ->
project.logger.info("Adding {} to '{}' configuration", configurationName, dependency)
resolver.project.dependencies.add(configurationName, dependency)
}
}
}

private static class GriffonPluginDependencyResolver implements Action<ResolvableDependencies> {
final Project project
final Map<String, List<String>> dependencyMap = [:]

GriffonPluginDependencyResolver(Project project) {
this.project = project
Expand Down Expand Up @@ -147,16 +135,12 @@ class GriffonPluginResolutionStrategy {

private void appendDependency(String artifactId, String scope, String dependencyCoordinates) {
if (artifactId.endsWith('-compile')) {
project.logger.info("Adding {} to 'compileOnly' configuration", dependencyCoordinates)
dependencyMap.get('compileOnly', []) << dependencyCoordinates
project.logger.info("Adding {} to 'testCompileOnly' configuration", dependencyCoordinates)
dependencyMap.get('testCompileOnly', []) << dependencyCoordinates
DEPENDENCY_MAP.get('compileOnly', []) << dependencyCoordinates
DEPENDENCY_MAP.get('testCompileOnly', []) << dependencyCoordinates
} else if (scope == 'test' && artifactId.endsWith('-test')) {
project.logger.info("Adding {} to 'testCompile' configuration", dependencyCoordinates)
dependencyMap.get('testCompile', []) << dependencyCoordinates
DEPENDENCY_MAP.get('testCompile', []) << dependencyCoordinates
} else {
project.logger.info("Adding {} to '{}' configuration", dependencyCoordinates, scope)
dependencyMap.get(scope, []) << dependencyCoordinates
DEPENDENCY_MAP.get(scope, []) << dependencyCoordinates
}
}
}
Expand Down

0 comments on commit 0101570

Please sign in to comment.