Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ jobs:
develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
- name: "🔨 Build project"
run: >
./gradlew :grails-bom:publishMavenPublicationToLocalBomRepository build :grails-shell-cli:installDist groovydoc
./gradlew build :grails-shell-cli:installDist groovydoc
--continue --stacktrace -PonlyCoreTests
functional:
name: "Functional Tests"
Expand All @@ -117,7 +117,7 @@ jobs:
develocity-access-key: ${{ secrets.GRAILS_DEVELOCITY_ACCESS_KEY }}
- name: "🏃 Run Functional Tests"
run: >
./gradlew :grails-bom:publishMavenPublicationToLocalBomRepository bootJar check
./gradlew bootJar check
--continue --stacktrace
-PonlyFunctionalTests
-PskipHibernate5Tests
Expand Down Expand Up @@ -149,7 +149,7 @@ jobs:
env:
GITHUB_MAVEN_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
run: >
./gradlew :grails-bom:publishMavenPublicationToLocalBomRepository bootJar cleanTest check
./gradlew bootJar cleanTest check
--continue --stacktrace
-PonlyMongodbTests
-PmongodbContainerVersion=${{ matrix.mongodb-version }}
Expand Down Expand Up @@ -179,7 +179,7 @@ jobs:
env:
GITHUB_MAVEN_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
run: >
./gradlew :grails-bom:publishMavenPublicationToLocalBomRepository bootJar cleanTest check
./gradlew bootJar cleanTest check
--continue --stacktrace
-PonlyHibernate5Tests
publishGradle:
Expand Down
3 changes: 2 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import java.time.format.DateTimeFormatter


ext {
isReproducibleBuild = System.getenv("SOURCE_DATE_EPOCH") != null
buildInstant = java.util.Optional.ofNullable(System.getenv("SOURCE_DATE_EPOCH"))
.map(Long::parseLong)
.map(Instant::ofEpochSecond)
Expand Down Expand Up @@ -80,7 +81,7 @@ subprojects {

configurations.configureEach {
resolutionStrategy {
def cacheHours = isCiBuild ? 0 : 24
def cacheHours = isCiBuild || isReproducibleBuild ? 0 : 24
cacheDynamicVersionsFor(cacheHours, 'hours')
cacheChangingModulesFor(cacheHours, 'hours')
}
Expand Down
34 changes: 34 additions & 0 deletions gradle/grails-extension-gradle-config.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

// do not cache SNAPSHOT dependencies
//dependencyManagement {
// resolutionStrategy {
// cacheChangingModulesFor 0, 'seconds'
// cacheDynamicVersionsFor 0, 'seconds'
// }
//}

grails {
// WARNING: enabling spring dependency management in core can have unintended side effects.
// since it loads the bom via a pom file, it can't use a gradle project() reference
// this means you MUST publish locally via ./gradlew :grails-bom:publishMavenPublicationToLocalBomRepository
// this causes unexpected version mismatches in the various plugin projects
springDependencyManagement = false
}
12 changes: 12 additions & 0 deletions grails-bom/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,18 @@ dependencies {
api "org.apache.grails:grails-gradle-plugins:${projectVersion}"
api "org.apache.grails.gradle:grails-gradle-model:${projectVersion}"
api "org.apache.grails:grails-docs-core:${projectVersion}"

// because we are not yet publishing hibernate6, just force the hibernate5 version for now
api("org.liquibase:liquibase-core") {
version {
strictly "$liquibaseHibernate5Version"
}
}
api("org.liquibase.ext:liquibase-hibernate5") {
version {
strictly "$liquibaseHibernate5Version"
}
}
}
}

Expand Down
1 change: 1 addition & 0 deletions grails-cache/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,5 @@ apply {
from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
27 changes: 21 additions & 6 deletions grails-data-hibernate5/dbmigration/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -37,25 +37,26 @@ ext {

dependencies {
// TODO: Clarify and clean up dependencies
implementation platform(project(':grails-bom'))
implementation platform(project(':grails-bom')) {
exclude group: 'org.liquibase', module: 'liquibase-core'
}

api("org.liquibase:liquibase-core:$liquibaseHibernate5Version")
api("org.liquibase.ext:liquibase-hibernate5:$liquibaseHibernate5Version") {
implementation("org.liquibase:liquibase-core:$liquibaseHibernate5Version")
implementation("org.liquibase.ext:liquibase-hibernate5:$liquibaseHibernate5Version") {
exclude group: 'org.hibernate', module: 'hibernate-core'
exclude group: 'org.hibernate', module: 'hibernate-entitymanager'
exclude group: 'org.hibernate', module: 'hibernate-envers'
exclude group: 'com.h2database', module: 'h2'
exclude group: 'org.liquibase', module: 'liquibase-commercial'
}

api(project(':grails-shell-cli')) {
implementation(project(':grails-shell-cli')) {
exclude group: 'org.slf4j', module: 'slf4j-simple'

// TODO: the shell cli is exporting groovy 3, while this project is expected to use groovy 4
// this plugin needs split into commands & the plugin itself so that different versions
// of groovy can be used
exclude group: 'org.codehaus.groovy', module: 'groovy'
exclude group: 'org.codehaus.groovy', module: 'groovy-bom'
exclude group: 'org.codehaus.groovy'
}

compileOnly 'org.springframework.boot:spring-boot-starter-logging'
Expand All @@ -71,6 +72,19 @@ dependencies {
testImplementation project(':grails-testing-support-datamapping')
testImplementation project(':grails-testing-support-web')
testImplementation 'com.h2database:h2'

constraints {
implementation("org.liquibase:liquibase-core") {
version {
strictly "$liquibaseHibernate5Version"
}
}
implementation("org.liquibase.ext:liquibase-hibernate5") {
version {
strictly "$liquibaseHibernate5Version"
}
}
}
}

tasks.named('jar', Jar) {
Expand All @@ -95,4 +109,5 @@ apply {
from rootProject.layout.projectDirectory.file('gradle/hibernate5-test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
1 change: 1 addition & 0 deletions grails-data-hibernate5/grails-plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -88,4 +88,5 @@ apply {
from rootProject.layout.projectDirectory.file('gradle/hibernate5-test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
2 changes: 2 additions & 0 deletions grails-data-mongodb/grails-plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ ext {
dependencies {

implementation platform(project(':grails-bom'))
testFixturesImplementation platform(project(':grails-bom'))

api project(':grails-data-mongodb-core'), {
// api: needed as classes should also be available when compiling apps. eg. MongoEntity
Expand Down Expand Up @@ -131,4 +132,5 @@ apply {
from rootProject.layout.projectDirectory.file('gradle/mongodb-test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
1 change: 1 addition & 0 deletions grails-fields/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,5 @@ apply {
from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
2 changes: 1 addition & 1 deletion grails-geb/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ dependencies {
// For most core projects, we don't apply the plugin and only add what we need so we need the platform
// for consistency, add the platform here and later move away from the grails-plugin gradle plugin apply
implementation platform(project(':grails-bom'))
testFixturesApi(platform(project(':grails-bom')))
testFixturesImplementation platform(project(':grails-bom'))

compileOnly project(':grails-core') // Provided, as this is a Grails plugin
Expand All @@ -69,4 +68,5 @@ apply {
from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,11 @@ class GrailsExtension {
*/
boolean importJavaTime = false

/**
* Whether the spring dependency management plugin should be applied by default
*/
boolean springDependencyManagement = true

/**
* Configure the reloading agent
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,10 @@ class GrailsGradlePlugin extends GroovyPlugin {

configureProfile(project)

applyDefaultPlugins(project)

registerGrailsExtension(project)

applyDefaultPlugins(project)

configureGroovy(project)

configureMicronaut(project)
Expand Down Expand Up @@ -283,14 +283,19 @@ class GrailsGradlePlugin extends GroovyPlugin {
protected void applyDefaultPlugins(Project project) {
applySpringBootPlugin(project)

Plugin dependencyManagementPlugin = project.plugins.findPlugin(DependencyManagementPlugin)
if (dependencyManagementPlugin == null) {
project.plugins.apply(DependencyManagementPlugin)
}
project.afterEvaluate {
GrailsExtension ge = project.extensions.getByType(GrailsExtension)
if(ge.springDependencyManagement) {
Plugin dependencyManagementPlugin = project.plugins.findPlugin(DependencyManagementPlugin)
if (dependencyManagementPlugin == null) {
project.plugins.apply(DependencyManagementPlugin)
}

DependencyManagementExtension dme = project.extensions.findByType(DependencyManagementExtension)
DependencyManagementExtension dme = project.extensions.findByType(DependencyManagementExtension)

applyBomImport(dme, project)
applyBomImport(dme, project)
}
}
}

protected void applySpringBootPlugin(Project project) {
Expand All @@ -312,12 +317,10 @@ class GrailsGradlePlugin extends GroovyPlugin {
'web'
}

protected String getDefaultMicronautVersion() {
'4.6.5'
}

void addDefaultProfile(Project project, Configuration profileConfig) {
project.dependencies.add('profile', "org.apache.grails.profiles:${System.getProperty("grails.profile") ?: defaultProfile}:")
def bomProject = project.rootProject.subprojects.find { it.name == 'grails-bom' }
project.dependencies.add(PROFILE_CONFIGURATION, project.dependencies.platform(bomProject ?: "org.apache.grails:grails-bom:${project.properties.get('grailsVersion')}"))
project.dependencies.add(PROFILE_CONFIGURATION, "org.apache.grails.profiles:${System.getProperty("grails.profile") ?: defaultProfile}:")
}

@CompileDynamic
Expand Down
1 change: 1 addition & 0 deletions grails-gsp/grails-sitemesh3/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -85,4 +85,5 @@ apply {
from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
1 change: 1 addition & 0 deletions grails-gsp/plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -185,4 +185,5 @@ apply {
from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
10 changes: 10 additions & 0 deletions grails-gsp/spring-boot/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,15 @@ ext {
}

dependencies {
implementation platform(project(':grails-bom'))
api project(':grails-sitemesh3')
}

apply {
// java-configuration must be applied first since tasks are now lazy registered
from rootProject.layout.projectDirectory.file('gradle/java-config.gradle')
//TODO: no docs until this is a publish project (its docs likely will need to be handled differently)
// from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
1 change: 1 addition & 0 deletions grails-scaffolding/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,5 @@ apply {
from rootProject.layout.projectDirectory.file('gradle/docs-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/publish-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
1 change: 1 addition & 0 deletions grails-test-examples/app1/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -80,4 +80,5 @@ apply {
from rootProject.layout.projectDirectory.file('gradle/functional-test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/java-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/test-webjar-asset-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
1 change: 1 addition & 0 deletions grails-test-examples/app2/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ apply {
from rootProject.layout.projectDirectory.file('gradle/functional-test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/java-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/test-webjar-asset-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}

//bootRun {
Expand Down
1 change: 1 addition & 0 deletions grails-test-examples/app3/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,5 @@ grails {
apply {
from rootProject.layout.projectDirectory.file('gradle/functional-test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/java-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
1 change: 1 addition & 0 deletions grails-test-examples/async-events-pubsub-demo/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,5 @@ bootRun {
apply {
from rootProject.layout.projectDirectory.file('gradle/functional-test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/java-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
1 change: 1 addition & 0 deletions grails-test-examples/cache/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,5 @@ dependencies {
apply {
from rootProject.layout.projectDirectory.file('gradle/functional-test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/java-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
1 change: 1 addition & 0 deletions grails-test-examples/datasources/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,5 @@ dependencies {
apply {
from rootProject.layout.projectDirectory.file('gradle/functional-test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/java-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
1 change: 1 addition & 0 deletions grails-test-examples/demo33/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,5 @@ apply {
from rootProject.layout.projectDirectory.file('gradle/functional-test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/java-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/test-webjar-asset-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
1 change: 1 addition & 0 deletions grails-test-examples/external-configuration/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ dependencies {
apply {
from rootProject.layout.projectDirectory.file('gradle/functional-test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/java-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}

tasks.withType(Test).configureEach {
Expand Down
1 change: 1 addition & 0 deletions grails-test-examples/geb/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -71,4 +71,5 @@ apply {
from rootProject.layout.projectDirectory.file('gradle/functional-test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/java-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/test-webjar-asset-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
1 change: 1 addition & 0 deletions grails-test-examples/gorm/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,5 @@ dependencies {
apply {
from rootProject.layout.projectDirectory.file('gradle/functional-test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/java-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
1 change: 1 addition & 0 deletions grails-test-examples/gsp-sitemesh3/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,5 @@ apply {
from rootProject.layout.projectDirectory.file('gradle/functional-test-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/java-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/test-webjar-asset-config.gradle')
from rootProject.layout.projectDirectory.file('gradle/grails-extension-gradle-config.gradle')
}
Loading
Loading