Skip to content

Commit b1ec62f

Browse files
committed
Allow specifying GORM version in gradle.properties
1 parent 806a20c commit b1ec62f

File tree

7 files changed

+67
-30
lines changed

7 files changed

+67
-30
lines changed

grails-bom/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ publishing {
130130
}
131131
}
132132

133-
['core', 'simple','web','rest-client','gorm', 'gorm-support', 'test-support', 'gorm-cassandra', 'gorm-mongodb', 'gorm-neo4j', 'gorm-hibernate4', 'gorm-hibernate5', 'gorm-hibernate', 'gorm-test'].each { name ->
133+
['core', 'simple','web','rest-client','gorm', 'gorm-validation', 'gorm-support', 'test-support', 'hibernate-core','gorm-test'].each { name ->
134134
mkp.dependency {
135135
mkp.groupId 'org.grails'
136136
mkp.artifactId "grails-datastore-$name"

grails-bom/plugins.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
hibernate4=6.0.8
22
hibernate5=6.0.8
33
mongodb=6.0.8
4-
rx-gorm-rest-client=1.0.4.RELEASE
4+
rx-gorm-rest-client=1.0.5.RELEASE
55
rx-mongodb=6.0.8
66
neo4j=6.0.8
77
cache=3.0.3

grails-bom/profiles.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
angular=3.2.2
22
rest-api=3.2.1
33
rest-api-plugin=3.2.0
4-
base=3.2.6.BUILD-SNAPSHOT
4+
base=3.2.7.BUILD-SNAPSHOT
55
plugin=3.2.1
66
web-plugin=3.2.0
77
web-jboss7=1.0.0.RC2
88
web=3.2.1
99
profile=3.2.1
10-
angular2=1.0.4.BUILD-SNAPSHOT
10+
angular2=1.0.4
1111
react=2.0.1
1212
webpack=1.0.2

grails-gradle-plugin/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ dependencies {
2323
}
2424

2525
compile "org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion"
26-
compile 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
27-
compile "io.spring.gradle:dependency-management-plugin:0.6.0.RELEASE"
26+
compile 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
27+
compile "io.spring.gradle:dependency-management-plugin:0.6.1.RELEASE"
2828
compile 'com.netflix.nebula:gradle-extra-configurations-plugin:2.2.0'
2929
}

grails-gradle-plugin/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ import grails.util.BuildSettings
1919
import grails.util.Environment
2020
import grails.util.GrailsNameUtils
2121
import grails.util.Metadata
22-
import groovy.transform.CompileDynamic
2322
import groovy.transform.CompileStatic
23+
import io.spring.gradle.dependencymanagement.DependencyManagementExtension
2424
import io.spring.gradle.dependencymanagement.DependencyManagementPlugin
2525
import nebula.plugin.extraconfigurations.ProvidedBasePlugin
2626
import org.apache.tools.ant.filters.EscapeUnicode
2727
import org.apache.tools.ant.filters.ReplaceTokens
28+
import org.gradle.api.Action
2829
import org.gradle.api.JavaVersion
2930
import org.gradle.api.Plugin
3031
import org.gradle.api.Project
@@ -33,7 +34,6 @@ import org.gradle.api.artifacts.Configuration
3334
import org.gradle.api.artifacts.ConfigurationContainer
3435
import org.gradle.api.artifacts.Dependency
3536
import org.gradle.api.artifacts.DependencyResolveDetails
36-
import org.gradle.api.file.CopySpec
3737
import org.gradle.api.file.FileCollection
3838
import org.gradle.api.java.archives.Manifest
3939
import org.gradle.api.plugins.GroovyPlugin
@@ -72,6 +72,7 @@ import javax.inject.Inject
7272
class GrailsGradlePlugin extends GroovyPlugin {
7373
public static final String APPLICATION_CONTEXT_COMMAND_CLASS = "grails.dev.commands.ApplicationCommand"
7474
public static final String PROFILE_CONFIGURATION = "profile"
75+
public static final List<String> CORE_GORM_LIBRARIES = ['core', 'simple', 'web', 'rest-client', 'gorm', 'gorm-validation', 'gorm-support', 'test-support', 'hibernate-core', 'gorm-test']
7576
List<Class<Plugin>> basePluginClasses = [ProvidedBasePlugin, IntegrationTestGradlePlugin]
7677
List<String> excludedGrailsAppSourceDirs = ['migrations', 'assets']
7778
List<String> grailsAppResourceDirs = ['views', 'i18n', 'conf']
@@ -148,9 +149,39 @@ class GrailsGradlePlugin extends GroovyPlugin {
148149
project.plugins.apply(SpringBootPlugin)
149150
}
150151

151-
if (!project.plugins.findPlugin(DependencyManagementPlugin)) {
152+
DependencyManagementPlugin dependencyManagementPlugin = project.plugins.findPlugin(DependencyManagementPlugin)
153+
if (dependencyManagementPlugin == null) {
152154
project.plugins.apply(DependencyManagementPlugin)
153155
}
156+
157+
DependencyManagementExtension dme = project.extensions.findByType(DependencyManagementExtension)
158+
159+
applyBomImport(dme, project)
160+
161+
if(project.hasProperty('gormVersion')) {
162+
String gormVersion = project.properties['gormVersion']
163+
project.configurations.all( { Configuration configuration ->
164+
configuration.resolutionStrategy.eachDependency( { DependencyResolveDetails details ->
165+
String dependencyName = details.requested.name
166+
if(details.requested.group == 'org.grails' &&
167+
dependencyName.startsWith('grails-datastore')) {
168+
for(suffix in GrailsGradlePlugin.CORE_GORM_LIBRARIES) {
169+
if(dependencyName.endsWith(suffix)) {
170+
details.useVersion(gormVersion)
171+
return
172+
}
173+
}
174+
}
175+
} as Action<DependencyResolveDetails>)
176+
} as Action<Configuration>)
177+
}
178+
}
179+
180+
private void applyBomImport(DependencyManagementExtension dme, project) {
181+
dme.imports({
182+
mavenBom("org.grails:grails-bom:${project.properties['grailsVersion']}")
183+
})
184+
dme.setApplyMavenExclusions(false)
154185
}
155186

156187
protected String getDefaultProfile() {

grails-shell/src/main/groovy/org/grails/cli/profile/commands/CreateAppCommand.groovy

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import org.grails.cli.profile.Feature
3333
import org.grails.cli.profile.Profile
3434
import org.grails.cli.profile.ProfileRepository
3535
import org.grails.cli.profile.ProfileRepositoryAware
36+
import org.grails.cli.profile.repository.MavenProfileRepository
3637
import org.grails.io.support.FileSystemResource
3738
import org.grails.io.support.Resource
3839
import java.nio.file.FileVisitResult
@@ -226,6 +227,14 @@ class CreateAppCommand extends ArgumentCompletingCommand implements ProfileRepos
226227

227228
initializeVariables(cmd.appName, defaultpackagename, profileName, cmd.grailsVersion)
228229

230+
if(profileRepository instanceof MavenProfileRepository) {
231+
MavenProfileRepository mpr = (MavenProfileRepository)profileRepository
232+
org.springframework.boot.cli.compiler.dependencies.Dependency gormDep = mpr.profileDependencyVersions.find("org.grails", "grails-datastore-core")
233+
if(gormDep != null) {
234+
variables['gorm.version'] = gormDep.version
235+
}
236+
}
237+
229238
Path appFullDirectory = Paths.get(cmd.baseDir.path, appname)
230239

231240
File projectTargetDirectory = cmd.inplace ? new File(".").canonicalFile : appFullDirectory.toAbsolutePath().normalize().toFile()

grails-shell/src/main/groovy/org/grails/cli/profile/repository/GrailsAetherGrapeEngineFactory.groovy

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@ import org.eclipse.aether.RepositorySystem
66
import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory
77
import org.eclipse.aether.impl.DefaultServiceLocator
88
import org.eclipse.aether.internal.impl.DefaultRepositorySystem
9-
import org.eclipse.aether.repository.Authentication
10-
import org.eclipse.aether.repository.AuthenticationContext
11-
import org.eclipse.aether.repository.AuthenticationDigest
129
import org.eclipse.aether.repository.RemoteRepository
1310
import org.eclipse.aether.repository.RepositoryPolicy
1411
import org.eclipse.aether.spi.connector.RepositoryConnectorFactory
@@ -31,49 +28,49 @@ import org.springframework.boot.cli.compiler.grape.RepositorySystemSessionAutoCo
3128
*/
3229
class GrailsAetherGrapeEngineFactory {
3330

34-
public static AetherGrapeEngine create(GroovyClassLoader classLoader,
31+
static AetherGrapeEngine create(GroovyClassLoader classLoader,
3532
List<GrailsRepositoryConfiguration> repositoryConfigurations,
3633
DependencyResolutionContext dependencyResolutionContext) {
3734

3835
RepositorySystem repositorySystem = createServiceLocator()
39-
.getService(RepositorySystem.class);
36+
.getService(RepositorySystem.class)
4037

4138
DefaultRepositorySystemSession repositorySystemSession = MavenRepositorySystemUtils
42-
.newSession();
39+
.newSession()
4340

4441
ServiceLoader<RepositorySystemSessionAutoConfiguration> autoConfigurations = ServiceLoader
45-
.load(RepositorySystemSessionAutoConfiguration.class);
42+
.load(RepositorySystemSessionAutoConfiguration.class)
4643

4744
for (RepositorySystemSessionAutoConfiguration autoConfiguration : autoConfigurations) {
48-
autoConfiguration.apply(repositorySystemSession, repositorySystem);
45+
autoConfiguration.apply(repositorySystemSession, repositorySystem)
4946
}
5047

5148
new DefaultRepositorySystemSessionAutoConfiguration()
52-
.apply(repositorySystemSession, repositorySystem);
49+
.apply(repositorySystemSession, repositorySystem)
5350

5451
return new AetherGrapeEngine(classLoader, repositorySystem,
5552
repositorySystemSession, createRepositories(repositoryConfigurations),
56-
dependencyResolutionContext);
53+
dependencyResolutionContext)
5754
}
5855

5956
private static ServiceLocator createServiceLocator() {
60-
DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator();
61-
locator.addService(RepositorySystem.class, DefaultRepositorySystem.class);
57+
DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator()
58+
locator.addService(RepositorySystem.class, DefaultRepositorySystem.class)
6259
locator.addService(RepositoryConnectorFactory.class,
63-
BasicRepositoryConnectorFactory.class);
64-
locator.addService(TransporterFactory.class, HttpTransporterFactory.class);
65-
locator.addService(TransporterFactory.class, FileTransporterFactory.class);
66-
return locator;
60+
BasicRepositoryConnectorFactory.class)
61+
locator.addService(TransporterFactory.class, HttpTransporterFactory.class)
62+
locator.addService(TransporterFactory.class, FileTransporterFactory.class)
63+
return locator
6764
}
6865

6966
private static List<RemoteRepository> createRepositories(
7067
List<GrailsRepositoryConfiguration> repositoryConfigurations) {
7168
List<RemoteRepository> repositories = new ArrayList<RemoteRepository>(
72-
repositoryConfigurations.size());
69+
repositoryConfigurations.size())
7370
for (GrailsRepositoryConfiguration repositoryConfiguration : repositoryConfigurations) {
7471
RemoteRepository.Builder builder = new RemoteRepository.Builder(
7572
repositoryConfiguration.getName(), "default",
76-
repositoryConfiguration.getUri().toASCIIString());
73+
repositoryConfiguration.getUri().toASCIIString())
7774
if (repositoryConfiguration.hasCredentials()) {
7875
builder.authentication = new AuthenticationBuilder()
7976
.addUsername(repositoryConfiguration.username)
@@ -83,10 +80,10 @@ class GrailsAetherGrapeEngineFactory {
8380
if (!repositoryConfiguration.getSnapshotsEnabled()) {
8481
builder.setSnapshotPolicy(
8582
new RepositoryPolicy(false, RepositoryPolicy.UPDATE_POLICY_NEVER,
86-
RepositoryPolicy.CHECKSUM_POLICY_IGNORE));
83+
RepositoryPolicy.CHECKSUM_POLICY_IGNORE))
8784
}
88-
repositories.add(builder.build());
85+
repositories.add(builder.build())
8986
}
90-
return repositories;
87+
return repositories
9188
}
9289
}

0 commit comments

Comments
 (0)