(Quick Reference)

2 Release History

Version: 2024.0.0-RC1

2 Release History

To make it easier for users to use and upgrade, Grace Framework adopts a version policy consistent with the Spring Boot.

Grace Version

Spring Boot Version

2024.0.x

3.4.x

2023.3.x

3.3.x

2023.2.x

3.2.x

2023.1.x

3.1.x

2023.0.x

3.0.x

2022.2.x

2.7.x

2022.1.x

2.7.x

2022.0.x

2.7.x

2.1 What's new in 2024.x

2024.0.0-RC1

⭐️ New Features

  • Support combined use of MongoDB and Hibernate #1383

  • Restore grace-plugin-dynamic-modules #1372

  • Add command group for ApplicationCommand #1354

    • Introduce Command

    • Use command group as the group of Gradle tasks

  • Create grace-web-async module #1347

  • Use AdditionalGormEntityTransformation to make GORM Entity injected same as Domain Class See graceframework/grace-data#83 #1349

  • Support Application type artifacts placed in src/main directory to be transformed #1348 #1149

  • Restore the use of GrailsDomainClass #1351

  • Add project’s classes dir to the current thread context classloader and allow CLI to discover project’s command in app/commands #1358

πŸ›  Improvements

  • Update README

  • Add release notes for 2024.0.0-RC1

  • Call String.toLowerCase() and .toUppercase() with explicit locale See spring-projects/spring-framework#33708 #1385

  • Change the name of tasks compileGsonViews and compileGmlViews to compileJsonViews and compileMarkupViews #1384

  • Remove HibernateDatastoreSpringInitializerSpec #1382

  • Relocate HibernateDatastoreSpringInitializer to grace-data-hibernate See graceframework/grace-data-hibernate#144 #1382

  • Synchronous update HiddenHttpMethodFilter to Spring implementation #1380

  • Only support running script files relative to the base dir #1376 #287

  • Move grails.factories from grace-gsp to grace-plugin-gsp #1371

  • Improve MigrationGenerator

    • Allow migration file name contains '-' and A-Z

    • Fix No such property: migrationAction

    • Use 'toSnakeCase()' method

  • Set group name for command UrlMappingsReport #1357

  • Set group name for the commands of database-migration plugin #1356

  • Remove dependency on grace-plugin-rest for grace-boot-rest #1344

  • Improve Grace Doc for generating PDF document #1324

    • Upgrade to Flying Saucer PDF 9.13.3

    • Doc resources: Upgrade Font Awesome from 4.1.0 to 4.7.0 #1323

    • Update doc templates: update pdf.css and grace.svg #1324

🐞 Bug Fixes

  • Fix many tests run failed on Windows #1353

  • Fix @since javadoc

  • Add missing version property to MongodbGrailsPlugin #1381

  • Prefer to use GrailsConsole.getInstance().getOut() in ProgressReporter #1350

  • Using javaVersion for Groovydoc in 4.0.29 to support 'JAVA_17' language level #1319

  • Fix deprecation warnings due to reporting.file() in Gradle 9 #1317

  • Update ViewCompileOptions: remove the use of deprecated AbstractOptions #1316

  • Fixes #1315 - executing grace on WSL with error: "bin/grace: 80: [[: not found" #1315

  • Fixes #1314 - executing compileGroovy on Windows with error "PatternSyntaxException: Unexpected internal error near index 1" #1314

  • EventsAutoConfiguration dose not build EventBus been as expected because missing call factoryBean.afterPropertiesSet() #1310

🎯 Refactoring

  • Refactor AbstractGroovyTemplateCompileTask and AbstractGroovyTemplatePlugin #1375

    • Add configDir property for AbstractGroovyTemplateCompileTask, and remove appDir property

    • Refactor AbstractGroovyTemplatePlugin

    • Set group and description of JsonViewCompilerTask and MarkupViewCompilerTask

    • Remove unused SourceSets

  • Refactor Dynamic Modules #1373

    • Auto-Configure for Dynamic Modules plugin

    • Update the title and description of DynamicModulesGrailsPlugin

  • Refactor Taglibs Plugin #1370

  • Relocate TagLibArtefactHandler from grace-taglib to grace-plugin-taglibs

  • Update grails.factories: define TraitInjector and ClassInjector in grace-plugin-taglibs

  • Relocate TagLibArtefactTypeAstTransformationSpec from grace-web-taglib to grace-plugin-taglibs

    • Add src/main/resources to Groovy compile classpath

  • Update TagLibArtefactHandler: change the path of tag libraries to app/taglibs

  • Refactor Grace Shell #1369

  • Relocate Groovy classes from org.grails.cli.groovy to org.grails.cli.compiler.groovy

  • Relocate Command interactive completers from org.grails.cli.interactive.completers to org.grails.cli.command.completers

  • Enhance Database Migration Generator #1367

  • Enhance MigrationGenerator

    • Provide various ways to create migrations based on conventions and additional arguments

  • Support snake_case migration name

  • Use the current datasource’s username as the author of generated changeset

  • Fix missing return false

  • Refactor Grace Database Migration #1366

  • Enhance DatabaseMigrationCommand

    • Move methods from ApplicationContextDatabaseMigrationCommand to DatabaseMigrationCommand

    • Update database migration commands to implement DatabaseMigrationCommand

  • Remove unused ApplicationContextDatabaseMigrationCommand

  • Remove unused commands and scripts

    • Remove src/main/scripts/ dbm-changelog-to-groovy.groovy dbm-create-changelog.groovy

    • Remove unused DbmChangelogToGroovy DbmCreateChangelog ScriptDatabaseMigrationCommand

    • Update build.gradle to remove tasks syncScripts syncTemplates

  • Update GroovyChangeLogParser: use IOUtils instead of SpringIOUtils

  • Update DatabaseMigrationCommand

    • Use DirectoryResourceAccessor instead of deprecated FileSystemResourceAccessor

    • Use DbUrlConnectionArgumentsCommandStep instead of deprecated DbUrlConnectionCommandStep

  • Remove unused ScriptDatabaseMigrationCommandSpec

  • Fix DatabaseMigrationCommandConfigSpec

  • Refactor Grace Console #1365

  • Enhance GrailsApplicationCommandRunner

    • Use ApplicationRunner to rewrite GrailsApplicationCommandRunner

    • Support executing GORM methods in the commands

  • Enhance GrailsApplicationScriptRunner

    • Use ApplicationRunner to rewrite GrailsApplicationScriptRunner

  • Refactor Grace CLI #1364

    • Rename package name of grace-cli from grails.cli.commands to grails.cli.command

    • Enhance ApplicationCommand

    • Recommend to use ApplicationCommand instead of GrailsApplicationCommand

    • Make GradleTaskCommandAdapter directly adapted with ApplicationCommand

  • Refactor Grace Shell #1359

    • Relocate Shell commands from org.grails.cli.profile.commands to org.grails.cli.commands

    • Relocate Ant Tasks from org.grails.cli.profile.tasks to org.grails.cli.ant.tasks

    • Relocate Gradle Commands from org.grails.cli.gradle.commands to org.grails.cli.command.gradle

    • Relocate Command IO from org.grails.cli.commands.io to org.grails.cli.core.io

    • Relocate Command Templates from org.grails.cli.commands.templates to org.grails.cli.core.template

    • Relocate ApplicationTemplateCommand CreateAppCommand from org.grails.cli.commands to org.grails.cli.command.app

    • Relocate CreatePluginCommand ListPluginsCommand PluginInfoCommand from org.grails.cli.commands to org.grails.cli.command.plugin

    • Relocate CreateProfileCommand ListProfilesCommand ProfileInfoCommand from org.grails.cli.commands to org.grails.cli.command.profile

    • Relocate HelpCommand from org.grails.cli.commands to org.grails.cli.command.help

    • Relocate OpenCommand from org.grails.cli.commands to org.grails.cli.command.open

    • Relocate Command APIs from org.grails.cli.commands to org.grails.cli.command

    • GradleTaskCommandAdapter should be ProjectCommand

    • Introduce ProfileCommandFactory and ProfileCommandResourceResolver for profile related commands and resource resolvers

    • CommandFactory.findCommands() no longer requires parameter profile, prefer to use ProfileCommandFactory

    • CommandResourceResolver.findCommandResources() no longer requires parameter profile, prefer to use ProfileCommandResourceResolver

  • Refactor Grace CLI #1354 #1355

    • Relocate CLI commands from grails.dev.commands to grails.cli.commands

    • Relocate CLI IO and Template from grails.cli.commands to grails.cli.core

    • Remove unused CommandLineResourceLoader

    • Add command group for ApplicationCommand

    • Introduce Command

    • Use command group as the group of Gradle tasks

  • Relocate Controllers API #1346

Relocate Controller APIs from grace-plugin-controllers to grace-web-mvc

  • InvalidResponseHandler ValidResponseHandler

  • ControllerExceptionHandlerMetaData DefaultControllerExceptionHandlerMetaData RenderDynamicMethod

  • ControllersDomainBindingApi

    • Refactor Grace Web Mime #1343

  • Decouple grace-views-core from grace-plugin-domain-class

  • Using ArtefactTypes.DOMAIN_CLASS instead of DomainClassArtefactHandler.TYPE

  • Decouple grace-views-core from grace-plugin-rest

  • DefaultViewRenderer should extends from AbstractRenderer instead of DefaultHtmlRenderer

  • Decouple grace-views-core from grace-plugin-mimetypes

  • Decouple grace-views-json from grace-plugin-rest

  • Decouple grace-views-markup from grace-plugin-rest

    • Refactor Grace Web Mime #1342

  • Relocate AcceptHeaderParser MimeUtility DefaultMimeUtility DefaultAcceptHeaderParser from grace-plugin-mimetypes to grace-web

  • Move utility methods from HttpServletResponseExtension to MimeTypeUtils

    • Refactor Grace Web Rest #1340

  • Relocate Link Linkable from grace-plugin-rest to grace-web-rest

  • Rename package from org.grails.plugins.web.rest.render to org.grails.web.rest.render

πŸš€ Dependency Upgrades

  • Upgrade to AsciidoctorJ 3.0.1 #1320

  • Upgrade to Flying Saucer PDF 9.13.3 #1322

  • Upgrade to Grace Asset Pipeline Plugin 7.0.0-RC1 #1331

  • Upgrade to Grace Async 7.0.0-RC1 #1334

  • Upgrade to Grace Data 2024.0.0-RC1 #1337

  • Upgrade to Grace Data Hibernate 2024.0.0-RC1 #1338

  • Upgrade to Grace Data MongoDB 2024.0.0-RC1 #1339

  • Upgrade to Grace Doc Engine 2.0.0 #1336

  • Upgrade to Grace Events 7.0.0-RC1 #1335

  • Upgrade to Grace Gradle Plugin 2024.0.0-M2 #1318

  • Upgrade to Grace Profile: Base 2024.0.0-RC1 #1326

  • Upgrade to Grace Profile: Plugin 2024.0.0-RC1 #1327

  • Upgrade to Grace Profile: Profile 2024.0.0-RC1 #1328

  • Upgrade to Grace Profile: Rest API 2024.0.0-RC1 #1329

  • Upgrade to Grace Profile: Starter 2024.0.0-RC1 #1330

  • Upgrade to Grace Profile: Web Plugin 2024.0.0-RC1 #1332

  • Upgrade to Grace Profile: Web 2024.0.0-RC1 #1333

  • Upgrade to Gradle 8.14.4 #1362

  • Upgrade to Gradle Git Properties Plugin 2.5.7 #1386

  • Upgrade to Gradle Tooling API 8.14.4 #1363

  • Upgrade to Groovy 4.0.30 #1360

  • Upgrade to Hibernate Validator 8.0.3.Final #1374

  • Upgrade to JSoup 1.21.2 #1321

  • Upgrade to JSON Unit 4.1.1 #1325

  • Upgrade to Maven 3.9.13 #1387

  • Upgrade to Maven 3.9.14 #1389

  • Upgrade to Maven Resolver 1.9.27 #1388

  • Upgrade to Spring Framework 6.2.16 #1377

  • Upgrade to Tomcat 10.1.52 #1368

βš™οΈ Tasks

  • Release v2024.0.0-RC1

2024.0.0-M2

⭐️ New Features

Modularizing the codebase

link:https://spring.io/blog/2025/10/28/modularizing-spring-boot(Spring Boot 4 has refactored its codebase into a more modular structure), I believe this is the right direction for the future. The Grace framework 2024 & 2025 will also start doing this. Grace’s plugins will be independent, more focused, and at the same time, they will integrate better with Spring Boot’s modules.

  • Create grace-boot-async module #1269

  • Create grace-boot-cache module #1208

  • Create grace-boot-events module #1270

  • Create grace-boot-hibernate module #1230

  • Create grace-boot-logging module #1257

  • Create grace-boot-mongodb module #1231

  • Create grace-boot-persistence module #1258

  • Create grace-boot-plugin module #1259

  • Create grace-boot-rest module #1256

  • Create grace-boot-test module #1272

  • Create grace-boot-validation module #1271

  • Create grace-boot-web module #1207

  • Create grace-web-rest module #1255

Core plugins have been consolidated into the framework

  • Merge grace-geb into the framework #1239

  • Merge grace-database-migration into the framework #1238

  • Merge MongoDB plugin into the framework #1232

  • Merge Hibernate plugin into the framework #1229

  • Merge grace-views into the framework #1215

  • Merge grace-scaffolding into the framework #1212

  • Merge grace-fields into the framework #1211

  • Merge grace-fields into the framework #1211

  • Merge grace-cache into the framework #1209

  • Merge grace-plugin-events into the framework #1183

  • Merge grace-plugin-async into the framework #1183

🐞 Bug Fixes

  • Fix deprecation warnings due to tasks calling getProject() at execution time #1297

  • Fix type cast warnnings in ParameterizedGrailsUnitTest #1292

  • Fixes the resources in the app/* not found in development mode #1251

    • ResourceLocator should use BuildSettings.GRAILS_APP_PATH instead of GrailsResourceUtils.GRAILS_APP_DIR

  • Fixes errors for using project.register(copyAstClasses) #1164

πŸ›  Improvements

  • Don’t include unused jars in the Shell CLI binary #1296

  • Decouple grace-web from grace-databinding GrailsParameterMap and PropertyEditorRegistryUtils use DataBinder.DEFAULT_DATE_FORMAT

  • Restore grace-web-databinding module

  • Remove explicit dependency on grace-plugin-rest for grace-boot-web #1294

  • Add explicit dependency on grace-views-markup for grace-boot-rest #1293

  • Provide install and help commands for fields plugin #1291

  • Update StartScriptGenerator templates for Grace Shell #1290

  • Exclude the plugins that have been consolidated into framework #1288

  • Update CreateAppCommand to support creating a minimal Grace 2024.0 app #1287

  • Migrate to Maven Central Portal Snapshots when using SNAPSHOT version to generate new project #1286

  • Provide org.graceframework.grace-app plugin #1285

  • Make Gradle dependencies sorted and grouped by scope and dependency #1283

  • Update autoconfigure compiler for Grace Application #1282

  • Provide install command for geb plugin to configure selenium drivers #1281

  • Add selenium api and drivers dependencies for geb plugin #1280

  • Plugins contain scripts and templates should include these into resources when packaging #1279

    • grace-plugin-database-migration

    • grace-plugin-fields

    • grace-plugin-geb

    • grace-plugin-scaffolding

  • Grace Boot MongoDb: add missing grails-plugin.xml #1278

  • Grace Boot Hibernate: add missing grails-plugin.xml #1277

  • Grace Boot Web: Remove unnecessary dependency on grace-plugin-gsp #1276

  • Grace Boot: Remove unnecessary dependency on grace-web #1275

  • Cleanup dependency on grace-plugin-api #1274

    • grace-core do not expose grace-plugin-api any more, so all the plugins should explicit depend on it.

    • grace-web only use grace-plugin-api compileOnly now.

  • Use PropertySourcesPropertyResolver provided by Spring Framework #1273

    • Don’t use ConfigurationPropertySources provided by Spring Boot, because some tags do not depend on Spring Boot

  • Update dependencies for grace-boot-mongodb #1120

  • Update README - Update the versions of Groovy, Gradle, Spring Boot

  • Remove duplicated grails.factories in grace-web-url-mappings #1245

  • Update migration.gdsl in the database-migration plugin #1240

    • Correct the migrationDir to db/migrations

    • Correct the column methods definded in createTable addColumn createIndex insert loadData loadUpdateData update

  • Add missing 'grails.factories' for 'database-migration' plugin

  • Add missing 'grails-plugin.xml' for 'geb' plugin

  • Add missing 'grails-plugin.xml' for 'database-migration' plugin

  • Remove unused plugins in the gradle/grails.versions.toml

  • Rearrange versions and libraries in the gradle/libs.versions.toml

  • Code formatting with Checkstyle and Codenarc

  • Add dependencies to Gradle Version Catalog

    • Add glassfish-expressly

    • Add hibernate-core

    • Add spring-orm

  • Merge hibernate plugin into the framework #1229

    • 4cbe4aecf7 Cleanup build scripts

    • 48f7fadf01 Code formatting

    • 5cece78f27 Code formatting with Checkstyle and Codenarc

  • Update the BOM of Grace Dependencies #1220

  • Update Gradle Version Catalog after importing 'cache' 'fields' 'scaffolding' 'views' plugins #1219

  • Rename the package of Grace Views #1218

    • Change the package of grace-views-json from grails.plugin.json.vieworg.grails.views.json

    • Change the package of grace-views-markup from grails.plugin.markup.vieworg.grails.views.markup

  • Refactor Grace Json View API: Use native groovy.json.* API instead #1217

    • Remove grails.plugin.json.builder.StreamingJsonBuilder

    • Remove grails.plugin.json.builder.JsonOutput

    • Remove grails.plugin.json.builder.JsonGenerator

    • Remove grails.plugin.json.builder.DefaultJsonGenerator

    • Add grails.plugin.json.view.api.JsonWritable

    • Add grails.plugin.json.util.JsonToken

  • Refactor Grace Views Format Java and Groovy source and test code #1216

  • Merge grace-views into the framework #1215

    • Merge grace-views-gradle into grace-gradle-plugin

    • Merge grace-views-json-testing-support into grace-test-support

    • Update Gradle build script

    • Update ViewsTransform JsonViewsTransform MarkupViewsTransform MarkupViewTemplateEngine

    • Make tests works

  • Refactor Grace Fields Plugin #1214

  • Refactor Grace Scaffolding Core and Plugin #1213

  • Make grace-plugin-fields and grace-plugin-scaffolding works #1211 #1212

    • Add grace-scaffolding-core grace-plugin-fields grace-plugin-scaffolding submodules

    • Update Gradle build script

    • Add grails-plugin.xml for grace-plugin-fields and grace-plugin-scaffolding

    • Add @TagLib to FormFieldsTagLib

    • Update ContextMarkupRenderer ContextMarkupRendererImpl DomainMarkupRendererImpl DelegatingBeanPropertyAccessorImpl

    • Update DomainMarkupRendererSpec and FormFieldsTemplateServiceSpec

  • Refactor Grace Cache Core and Plugin #1210

  • Make grace-cache-core and grace-plugin-cache works #1209

    • Add grace-cache-core and grace-plugin-cache submodules

    • Update Gradle build script

    • Add grails-plugin.xml

    • Add @TagLib to grails-plugin.xml

    • Migrate some JUnit 4 tests to JUnit 5

    • Remove demo tests

  • Enhance CodeGenConfig #1201

    • Add method loadDefaultConfig() to simplify usage

  • Relocate CodeGenConfig from grace-api to grace-bootstrap #1200

  • Rename beans to propertySourcesPlaceholderConfigurer beanPropertyOverrideConfigurer to keep naming consistent with the CoreConfiguration #1198

  • Refine GroovyPagesTemplateRenderer

    • Remove unused codes

    • Decouple grace-web-gsp from grace-plugin-domain-class

  • Move CamelCaseUrlConverterSpec and HyphenatedUrlConverterSpec from grace-core to the grace-web-common #1189

  • BuildSettings.APP_BASE_DIR: rename base.dir to grails.base.dir #1186

  • Improve EntityTraitInjector and GormTransformer #1184

    • Refactor EntityTraitInjector and GormTransformer

    • Add tests

  • Remove the configuration of system properties in GrailsGradlePlugin.configureGrailsBuildSettings() #1173 #1157

  • Update GspCompileOptions: remove the use of deprecated AbstractOptions #1166 #1165

  • Enhance FindMainClassTask and GrailsGradlePlugin.registerFindMainClassTask() #1163

  • Add configDir to GroovyPageForkCompileTask And migrate project.buildDir to project.layout.buildDirectory #1162

  • Task compileWebappGroovyPages should dependsOn classes #1161

  • Update Gradle Version Catalog #1145

  • Rename grace-gorm to grace-data properties in the Grace BOM #1144

  • Improve GroovyCompiler to allow Groovy scripts to be recompiled and reloaded after modification #1142

  • Ensure that Grace Artefact classes are not registered prematurely into the Spring context #1141

  • Update .gitattributes to ensure the web fonts are treated as binary #1138

  • Migrate to Central Portal OSSRH Staging API #1114

🎯 Refactoring

#1295 Restore grace-web-databinding module

  • Restore grace-web-databinding module

  • Decouple grace-web from grace-databinding

    • GrailsParameterMap and PropertyEditorRegistryUtils use DataBinder.DEFAULT_DATE_FORMAT

#1260 Create grace-web-rest module

  • Introduce RendererRegistryCustomizer #1260

    • RendererRegistryCustomizer allow to customize RendererRegistry, like DefaultRendererRegistryCustomizer, to add more user-defined Renderer

#1254 Refactor GrailsExceptionResolver

  • Introduce GrailsUrlMappingsExceptionResolver to make grace-web-mvc decoupled from grace-web-url-mappings

  • GrailsExceptionResolver should not reuse cached controller attribute to find the given error path

  • Cleanup GrailsWrappedRuntimeException

#1253 Refactor grace-web-url-mappings

  • Relocate CORS related to grace-plugin-url-mappings

  • Remove method setGrailsCorsConfiguration() in UrlMappingsHandlerMapping, use AbstractHandlerMapping.setCorsConfigurations() instead

  • Relocate UrlMappingsErrorPageCustomizer and AnsiConsoleUrlMappingsRendererSpec to grace-plugin-url-mappings

#1252 Various improvements related to stack trace logging and exception display

  • ErrorsViewStackTracePrinter should use grailsResourceLocator first

  • And grailsResourceLocator need to set searchLocation to BuildSettings.BASE_DIR

  • Display the relative path of the file associated with the errors

  • Auto-configure StackTraceFilterer bean on GrailsExceptionResolver

  • Improve the log messages of exception’s stack trace

  • Fixed StackTracePrinterSpec

  • Add an additional Spring configuration metadata: grails.full.stacktrace

  • Formatting request parameters and log information, the excluded parameters will be marked [FILTERED] in the log

#1250 Create grace-plugin-taglibs

  • Create grace-plugin-taglibs Move org/grails/plugins/web/taglib/*TagLib from grace-plugin-gsp to grace-plugin-taglibs #1249

#1248 Consolidate 'grace-web-sitemesh' into 'grace-web-gsp'

  • Consolidate 'grace-web-sitemesh' into 'grace-web-gsp'

#1247 Make 'grace-web-mvc' decoupled from 'grace-web-sitemesh'

  • Make 'grace-web-mvc' decoupled from 'grace-web-sitemesh'

  • Update copyright year to 2025

  • Remove 'grace-web-common' module #1246

#1246 Consolidate 'grace-web-common' into 'grace-web'

  • Consolidate 'grace-web-common' into 'grace-web'

#1245 Relocate AnsiConsoleUrlMappingsRenderer UrlMappingsReportCommand from grace-web-url-mappings to grace-plugin-url-mappings

  • Relocate AnsiConsoleUrlMappingsRenderer UrlMappingsReportCommand from grace-web-url-mappings to grace-plugin-url-mappings

#1244 Consolidate 'grace-web-databinding' into 'grace-web-common'

Consolidate 'grace-web-databinding' into 'grace-web-common' - Move DataBinder WebDataBinding WebDataBindingTraitInjector from 'grace-web-databinding' to 'grace-plugin-databinding' - Move org/grails/web/databinding/* from 'grace-web-databinding' to 'grace-web-common'

#1243 Consolidate 'grace-web-jsp' into 'grace-web-gsp'

  • Consolidate 'grace-web-jsp' into 'grace-web-gsp'

#1242 Cleanup dependencies

Relocate ErrorsViewStackTracePrinter GrailsWrappedRuntimeException from grace-web-common to grace-web-mvc Remove getPagesTemplateEngine() of GrailsApplicationAttributes Update dependencies - grace-web-gsp no longer depends on grace-web-taglib - grace-web-common no longer depends on grace-gsp - grace-plugin-fields should depends on grace-web-taglib

#1241 'grace-web-gsp-taglib' has been consolidated into 'grace-web-taglib' and 'grace-plugin-gsp'

  • Remove grace-web-gsp-taglib module its functionality has been consolidated into grace-web-taglib and grace-plugin-gsp

  • Relocate org/grails/plugins/web/taglib/* from grace-web-gsp-taglib to grace-plugin-gsp

  • Relocate StandaloneTagLibraryLookup from grace-web-gsp-taglib to grace-web-taglib

#1205 Refactor GrailsApplicationLifeCycle

  • 8d7161da21

    • Rename GrailsApplicationLifeCycle to GrailsApplicationLifecycle

    • Rewrite GrailsApplicationLifecycle using Java

    • Remove GrailsApplicationLifeCycleAdapter

    • Simplify Plugin

    • Rename GrailsApplicationPostProcessor.setGrailsApplicationLifeCycle() to GrailsApplicationPostProcessor.setGrailsApplicationLifecycle()

    • Update GrailsApplicationBuilder

#1204 Refactor Grace Spring Boot and Grace Spring

  • f24e041d52 Move all classes in the grace-spring-boot into grace-spring

The grace-spring-boot module contains some classes related to the Spring framework and Spring Boot, But now, all of theme have been relocated into grace-spring, you should use grace-spring directly.

#1203 Refactor Grace Bootstrap

  • Move ConfigProperties ConfigPropertiesSpec from grace-plugin-core to grace-bootstrap

  • Move NavigableMap NavigableMapConfig from grace-api to grace-bootstrap

  • Move ConfigMapSpec NavigableMapSpec from grace-api to grace-bootstrap

  • Rename GroovyConfigPropertySourceLoader YamlPropertySourceLoader package from org.grails.spring.boot.env to org.grails.config.loader

  • Rename package GroovyConfigPropertySourceLoaderSpec YamlPropertySourceLoaderSpec

  • Update grace-plugin-core/src/main/resources/META-INF/spring.factories

  • Move the classes under the org.grails.config package from grace-core and grace-spring-boot to grace-bootstrap

  • Move CompositeConfig EnvironmentAwarePropertySource NavigableMapPropertySource PrefixedConfig PrefixedMapPropertySource PropertySourcesConfig from grace-core to grace-bootstrap

  • Move NavigableMapNestedEqualitySpec NavigableMapPropertySourceSpec NavigableMapSpringProfilesSpec PropertyResolutionSpec PropertySourceConfigSpec PropertySourcesConfigSpec SystemEnvironmentConfigSpec from grace-core to grace-bootstrap

  • Move GroovyConfigPropertySourceLoader YamlPropertySourceLoader from grace-spring-boot to grace-bootstrap

  • Move GroovyConfigPropertySourceLoaderSpec YamlPropertySourceLoaderSpec from grace-spring-boot to grace-bootstrap

#1202 Relocate Named and Described from grace-bootstrap to grace-api

#1199 Refactor GrailsApplication

  • Fix doc typos

  • Remove method getMetadata() in GrailsApplication GrailsApplication should not depend on Metadata, please use Metadata.getCurrent() instead

  • Remove deprecated constants in GrailsApplication

    • CONFIG_CLASS

    • DATA_SOURCE_CLASS

    • PROJECT_META_FILE

#1197 Revisit Grace Spring Boot Module

Move some classes to more appropriate modules

  • Relocate GroovyConfigPropertySourceLoaderSpec YamlPropertySourceLoaderSpec to grace-spring-boot/src/test/groovy/org/grails/spring/boot/env/

  • Relocate ClassEditor PropertiesEditor to grace-spring-boot/src/main/groovy/org/grails/spring/beans/support/

  • Move ClassRelativeClassLoader ClassRelativeResourcePatternResolver from grace-spring-boot to grace-plugin-i18n

  • Move GrailsPlaceholderConfigurer GrailsBeanPropertyOverrideConfigurer from grace-spring-boot to grace-plugin-core

  • Move NavigableMapPropertySource NavigableMapPropertySourceSpec from grace-api to grace-spring-boot

#1196 Refactor IOUtils

  • Refactor IOUtils Remove SpringIOUtils

    • Using IOUtils instead Deprecated IOUtils.toString(Reader)

    • Using IOUtils.copyToString(Reader)

    • Enhance IOUtils.copy() methods

    • Using FileCopyUtils.copy() to implement

#1195 Migrate to Spring Framework’s Resource API

  • Use PathMatchingResourcePatternResolver instead of CachingPathMatchingResourcePatternResolver

  • Move ResourceLocator from grace-api to the grace-core

    • Move DefaultResourceLocator from grace-plugin-api to the grace-core

    • Remove org.grails.coreio.PluginPathAwareFileSystemResourceLoader

  • Use StaticResourceLoader in the grace-bootstrap

  • Use built-in classes such as Resource ResourceLoader provided by the Spring framework

The following classes have been removed - AbstractFileResolvingResource - AntPathMatcher - ByteArrayResource - ClassPathResource - DefaultResourceLoader - FileSystemResource - FileSystemResourceLoader - GrailsByteArrayResource - GrailsResource - PathMatchingResourcePatternResolver - Resource - ResourceLoader - SpringResource - UrlResource

#1194 Refactor Grace API

  • Move Mixin MixinTargetAware from grace-api to grace-core

    • Move CacheEntry Pair Triple from grace-api to grace-util

    • Move AbstractTypeConvertingMap TypeConvertingMap TypeConvertingMapTests from grace-api to grace-util

  • Move CompositeConfig EnvironmentAwarePropertySource PrefixedConfig PrefixedMapPropertySource PropertySourcesConfig from grace-api to the grace-core

    • Move NavigableMapPropertySourceSpec from grace-core to grace-api

    • Move DefaultGrailsPluginTests from grace-plugin-api to grace-test-suite-uber

  • Move DefaultErrorsPrinter from grace-api to the grace-core

    • Rename NewInstanceCreationException to GrailsClassCreationException and relocate to grace-core

    • Rename GrailsDomainException to GrailsClassException and relocate to grace-core

    • Rename InvalidPropertyException to GrailsPropertyInvalidException and relocate to grace-core

  • Move AbstractGrailsClass AbstractInjectableGrailsClass from grace-api to the grace-core

    • Move InvalidVersionException VersionComparator GrailsPlugin PluginSource from grace-api to the grace-plugin-api

  • Move ConfigProperties from grace-api to the grace-plugin-core

  • Move GrailsFactoriesLoader from grace-api to the grace-bootstrap

  • Move Settings from grace-api to the grace-bootstrap

#1193 Refactor GSP plugin

  • Remove deprecated GrailsTagLibClass DefaultGrailsTagLibClass TagLibArtefactHandler

  • Make ControllerTagLibraryTraitInjector inherit directly from TraitInjectorAdapter

  • Use ArtefactTypes.TAG_LIBRARY instead of TagLibArtefactHandler.TYPE

#1192 Refactor Bootstrap Artefact

  • Relocate BootstrapArtefactHandler BootstrapArtefactHandlerSpec to grace-boot

    • Move GrailsBootstrapClass DefaultGrailsBootstrapClass from grace-web to grace-boot

    • Update GrailsApplicationBuilder

  • Auto-configure BootstrapClassRunner

    • Move BootstrapClassRunner from grace-plugin-controllers to grace-boot

    • Rename BootstrapClassRunner to GrailsBootstrapClassRunner

    • Auto-configure GrailsBootstrapClassRunner in GrailsBootstrapAutoConfiguration

    • Add grails.bootstrap.skip to Spring Configuration Metadata

  • Use ArtefactTypes.BOOTSTRAP instead of BootstrapArtefactHandler.TYPE

#1191 Refactor Grace Boot

  • Refactor Grace Boot

    • Move ApplicationArtefactHandler ApplicationClassInjector from grace-core to grace-boot

    • Move LoggingTransformerSpec from grace-logging to grace-boot

    • Update ArtefactTypeAstTransformationSpec GlobalGrailsClassInjectorTransformationSpec GrailsAwareInjectionOperationSpec

#1190 Refactor Services plugin

  • Refactor Services plugin

    • Use ArtefactTypes.SERVICE instead of ServiceArtefactHandler.TYPE

    • Move GrailsServiceClass DefaultGrailsServiceClass from grace-core to grace-plugin-services

    • Relocate ServiceArtefactHandler ServiceArtefactHandlerSpec to grace-plugin-services

    • Update ServiceUnitTest

#1189 Refactor Controllers and Controllers plugins

  • Move DefaultGrailsControllerClassSpec to the grace-plugin-controllers

  • Refactor UrlMappings plugin

    • Use ArtefactTypes.URL_MAPPINGS instead of UrlMappingsArtefactHandler.TYPE

    • Move GrailsUrlMappingsClass DefaultGrailsUrlMappingsClass from grace-core to grace-web-common

    • Relocate UrlMappingsArtefactHandler UrlMappingsArtefactHandlerSpec to grace-plugin-url-mappings

  • Refactor Controllers plugin

    • Use ArtefactTypes.CONTROLLER instead of ControllerArtefactHandler.TYPE

    • Move Action CamelCaseUrlConverter HyphenatedUrlConverter UrlConverter from grace-core to grace-web-common

    • Relocate ControllerArtefactHandler ControllerArtefactHandlerSpec to grace-plugin-controllers

    • Update LoggingTransformerSpec in grace-logging

    • Add ControllerLoggingTransformerSpec to grace-plugin-controllers

#1188 Refactor Domain Class plugin

  • Relocate DomainClassArtefactHandler to grace-plugin-domain-class

  • Decouple DefaultGrailsApplication.addArtefact() from DomainClassArtefactHandler

  • Introduce ArtefactTypes - Use ArtefactTypes.DOMAIN_CLASS instead of DomainClassArtefactHandler.TYPE

  • Use GrailsASTUtils.isDomainClass() instead of DomainClassArtefactHandler.isDomainClass()

#1187 Refactor Domain Class plugin

  • Remove AnnotationDomainClassArtefactHandler

  • Relocate DefaultGrailsDomainClassInjector to grace-plugin-domain-class

#1185 Refactor Domain Class plugin

  • Decouple grace-core from grace-plugin-domain-class

    • Update tests

    • Move tests from grace-core into grace-plugin-domain-class

#1183 Merge async and events plugins into the framework

  • Code format

  • Build async and events plugins

    • Add grace-plugin-async and grace-plugin-events

    • Use Gradle version catalog to manage dependencies

    • Add version and descriptor to plugins

    • Update TransactionalPromiseDecorator and make tests pass

#1182 Restructure GORM Support

  • 0d901fa098 Move ProxyHandler and PersistenceContextInterceptor to grace-datastore-gorm-support See graceframework/grace-data#73

  • 74555e5923 Add EntityTraitInjector and GormTransformer from grace-datastore-gorm-support See graceframework/grace-data#73

#1180 Refactor Gradle Doc Plugin

  • Refactor DocPublisher

    • Rename publishPdf() to generatePdfGuide()

    • Remove PublishPdfTask

  • Refactor GrailsDocGradlePlugin

    • Rename docs to publishGuide

    • Add new properties singlePdf generatePdf to PublishGuideTask

    • Remove registed task docsPdf

#1176 Refactor Gradle Doc Plugin

  • Remove obsolete MigrateLegacyDocs

  • Refactor PublishGuideTask - Migrate all properties to lazy properties

  • Refactor PublishGuideTask Remove Gradle’s deprecation warning "Invocation of Task.project at execution time has been deprecated."

#1175 Refactor Grace Banner

  • Refactor GrailsResourceBanner

    • Align with Spring Boot’s ResourceBanner

    • Don’t return the default application name in Metadata.getApplicationName()

    • Add GrailsResourceBannerTests

  • Refactor GrailsResourceBanner

    • Remove deprecated method getApplicationVersion(Class<?> sourceClass)

    • Get name and version from environment

#1174 Refactor Gradle plugins

  • Refactor GrailsGradlePlugin

    • Remove enableNative2Ascii() in favor of using Gradle’s ProcessResources

    • Deprecated native2ascii and native2asciiAnt in GrailsExtension

  • Refine GrailsPluginGradlePlugin

    • Add ProcessPluginResourcesTask

    • Improve configurePluginResources()

  • Refine GrailsGradlePlugin and GrailsWebGradlePlugin

    • Add configureProcessResources() for GrailsWebGradlePlugin

    • Extract copying templates from GrailsGradlePlugin.enableNative2Ascii() to GrailsWebGradlePlugin

#1172 Refactor Gradle Profile Plugin

  • Refactor GrailsProfileGradlePlugin

    • Add constants PROCESS_PROFILE_RESOURCES_TASK_NAME COMPILE_PROFILE_TASK_NAME PROFILE_GROUP

    • Add registerOrGetJarTask() and registerOrGetSourcesJarTask()

    • Improve sourcesJarTask

  • Refactor GrailsProfileGradlePlugin

    • Add ProfileResourcesProcessTask

    • Improve ProfileCompilerTask

    • Refactor GrailsProfileGradlePlugin

#1171 Support configuration of project resources and sources directories

  • Configure the main sources and resources directories This PR allow developers to configure the app sources and resources,

grails {
    appSourceDirs += ['models', 'repositories']
    appResourceDirs += ['config']
}

#1170 Customize Groovy compiler configuration

  • Support adding user defined node metadata This PR allow develpers to add some user defined node metadata by configuring configScript.metaDataMap,

configScript {
    metaDataMap['APP_THEME'] = 'custom meta data'
}
  • Allow to provide a custom Groovy script file that configures the Groovy compiler The default Groovy script file should be placed in config/groovy/compiler.groov,

withConfig(configuration) {
    inline(phase: 'CONVERSION') { source, context, classNode ->
        source.ast.putNodeMetaData('PROJECT_NAME', '${PROJECT_NAME}')
        source.ast.putNodeMetaData('PROJECT_TYPE', '${PROJECT_TYPE}')
        source.ast.putNodeMetaData('PROJECT_VERSION', '${PROJECT_VERSION}')
        source.ast.putNodeMetaData('PROJECT_DIR', '${PROJECT_DIR}')
        source.ast.putNodeMetaData('GRAILS_APP_DIR', '${GRAILS_APP_DIR}')
    }
}

#1169 Refactor Gradle plugins

  • Refactor GrailsGradlePlugin

    • Introduce GenerateBuildInfo

    • Remove @CompileDynamic on createBuildPropertiesTask()

  • Refactor GrailsGradlePlugin

    • Introduce GenerateConfigScript

    • Rename configureGroovyASTMetadata() to configureGroovyCompiler()

#1168 Refactor Gradle plugins

  • Configure the classpath of the Spring Boot’s BootArchive

  • Change the generated gsp class name: remove the prefixed 'gsp', and append '_' before the view names

  • Change the compiled gsp classes target directory

  • Correct the Groovy build classes dirs

#1167 Refactor Gradle plugins

  • Improve GroovyPagePlugin and GroovyPageForkCompileTask

    • Remove unnecessary dependency on jakarta.servlet-api

    • Remove Configuration providedCompile, only use compileClasspath

    • Don’t call Task.getProject() from a task action

    • Use JavaPlugin.CLASSES_TASK_NAME instead of classes

    • Use GrailsGradlePlugin.GRAILS_EXTENSION_NAME

  • Refactor GrailsProfileGradlePlugin

    • Use BasePlugin.ASSEMBLE_TASK_NAME instead of assemble

    • Rename CONFIGURATION_NAME to GRAILS_CONFIGURATION_NAME

    • Rename RUNTIME_CONFIGURATION to PROFILE_CONFIGURATION_NAME

    • Use Groovy style project.configurations and project.extensions

  • Update ApplicationContextCommandTask and ApplicationContextScriptTask

    • Remove dependsOn of the tasks ApplicationContextCommandTask and ApplicationContextScriptTask

    • Configure dependsOn when registering the tasks

  • Refactor GrailsGradlePlugin

    • Use JavaPlugin.CLASSES_TASK_NAME instead of classes

    • Use Groovy style project.configurations and project.extensions

    • Add GRAILS_EXTENSION_NAME FIND_MAIN_CLASS_TASK_NAME BUILD_PROPERTIES_TASK_NAME

    • Rename CONSOLE_CONFIGURATION to CONSOLE_CONFIGURATION_NAME

    • Rename PROFILE_CONFIGURATION to PROFILE_CONFIGURATION_NAME

    • Remove addDefaultProfile()

#1164 Refactor Gradle Plugins

  • Improve GrailsPluginGradlePlugin

    • Use constant name of the Task and Configuration

    • Use tasks.register() instead of tasks.create()

    • Cleanup codes

  • Configure the main application class name fo runScript task

  • refactor configureGrailsBuildSettings() and configureSpringBootExtension()

    • Change configureGrailsBuildSettings() return to void

    • Migrate deprecated project.buildDir

    • Add helper methods to SourceSets

  • refactor configurePathingJar

    • Enhance buildClasspath()

    • Use project.layout.buildDirectory instead of project.buildDir

    • Make resolveClassesDirs() private

  • refactor enableNative2Ascii()

    • Use inline ant.native2ascii()

    • Remove createNative2AsciiTask

  • refactor createBuildPropertiesTask()

    • Change its return type to void

    • Use tasks.register() instead of tasks.create()

    • Make build properties ordered

  • refactor configureConsoleTask()

    • Remove createConsoleTask() and createShellTask

    • Use tasks.register() instead of tasks.create()

  • refactor configureApplicationCommands()

    • Use tasks.register() instead of tasks.create()

    • Remove unnecessary @CompileDynamic

  • refactor configureRunScript() and configureRunCommand()

    • Use tasks.register() instead of tasks.create()

    • Remove unnecessary @CompileDynamic

  • refactor configureGroovyASTMetadata()

    • Use tasks.register() instead of tasks.create()

    • Use tasks.named() instead of tasks.getByName()

    • Remove unnecessary @CompileDynamic

#1157 Allow developers to customize the app directory

Grails employs a structured directory layout that organizes files and folders based on their functionality, which is essential for maintaining code in a large application.

The app directory is central to a Grails application, containing subdirectories for domains, services, views, controllers, taglibs and assets, which follow the MVC architectural pattern.

In the past, Grails has always adhered to the convention of using grails-app as a fixed directory since its inception. In Grace, we can use grails-app, or the more concise app. Now, in the upcoming Grace 2024 version, we take it a step further by allowing developers to customize this directory. You are free to choose a more suitable specific directory, such as web, admin, api, or store.

#1149 Application type artifacts are supported in both the app/boot and src/main directories

  • Application type artifacts are supported in both the app/boot and src/main directories

    • Move from app/init to app/boot

    • Update releated tests

#1148 Move artefact Bootstrap.groovy from app\init to app\boot

#1147 Rename artefact type BootStrap to Bootstrap

  • Rename BootStrap.groovy to Bootstrap.groovy

    • Update DefaultGrailsBootstrapClass.BOOT_STRAP to Bootstrap as the trailing part of the Bootstrap class type

    • Rename BootStrapClassRunner to BootstrapClassRunner

    • Change the bean name to bootstrapClassRunner in ControllersGrailsPlugin

    • Update the other related tests

    • We should also update the base profile

#1140 Refactor GroovyCompiler

  • Improve GroovyCompiler for better compilation of Groovy scripts #1139

Only use Groovy Grape’s runtime dependencies to load ArtefactHandler ClassInjector TraitInjector, so the Shell no longer need grace-plugin-controllers grace-plugin-gsp grace-plugin-url-mappings, which greatly reduces the size of the final CLI installation package.

  • Introduce GrailsArtefactClassTransformation

  • Remove some runtime dependencies of grace-shell

  • Add support methods in TraitInjectionUtils

  • Cleanup ExtendedGroovyClassLoader

#1136 Refactor the core API of the framework

This is a very important code refactoring and update for the framework.

Initially, I intended to run a Single-File Application Groovy script in the CLI, but after analyzing a lot of the framework’s underlying code, I found that these core API were very difficult to extend and test, so I began a painful code refactoring journey.

After the refactoring, it has now become possible to successfully run a Single-File Application Groovy script in the CLI.

Refactoring involves several important APIs of Grails. I believe that refactoring these classes is significant for the maintenance and updating of the framework, and it is also very helpful for third-party plugin developers, making plugins and libraries easy to extend and test.

  • ArtefactHandler

  • ClassInjector

  • TraitInjector

  • GlobalGrailsClassInjectorTransformation

  • GlobalGrailsPluginTransformation

  • GrailsASTUtils

  • GrailsGradlePlugin

ArtefactHandler

  • Relocate ArtefactHandlerAdapter to grace-core

  • Support Grails and GORM Entity for DomainClassArtefactHandler.isArtefactClass

  • Refactor isDomainClass() in DomainClassArtefactHandler

  • Refactor ControllerArtefactHandler

  • Refactor TagLibArtefactHandler

  • Support taglib with annotation @TagLib for TagLibArtefactHandler

  • Remove supports for @TagLibrary as artefact type, use @TagLib instead

  • Adding Spock tests for ArtefactHandlers

  • Adding @Artefact() annotation to Grails artefacts in the tests

ClassInjector

  • Refactor ClassInjector

  • Add support for ClassInjector ordering

  • Using GrailsFactoriesLoader to load ClassInjector

  • Update BootInitializerClassInjector

  • Refactor ApplicationClassInjector

  • Refactor DefaultGrailsDomainClassInjector

  • Refactor AbstractGrailsArtefactTransformer

  • Refactor ArtefactTypeAstTransformation

  • Refactor ControllerActionTransformer

  • Refactor ControllerDomainTransformer

  • Refactor LoggingTransformer

  • Refactor ResourceTransform

  • Refactor TagLibraryTransformer

  • Deprecated SupportsClassNode

  • Deprecated ClassInjector.shouldInject(URL), in favor of shouldInject(ClassNode)

TraitInjector

  • Introduce TraitInjectorAdapter

  • Using boolean supports(ClassNode) to check if the classNode need to be injected

  • Add support for TraitInjector ordering

  • Refactor TraitInjectionUtils

  • Deprecated TraitInjectionSupport

  • Deprecated GlobalClassInjector and GlobalClassInjectorAdapter

GrailsASTUtils

  • Adding more methods to check whether the specified source is a Grails project source

  • Adding method getGrailsArtefactType() to GrailsASTUtils

  • Refactor isDomainClass() in GrailsASTUtils

GrailsGradlePlugin: configure Groovy AST Metadata for configurationScript of GroovyCompileOptions

  • GRAILS_APP_DIR

  • PROJECT_DIR

  • PROJECT_NAME

  • PROJECT_TYPE

  • PROJECT_VERSION

GlobalGrailsClassInjectorTransformation and GlobalGrailsPluginTransformation

  • Refactor GlobalGrailsClassInjectorTransformation

  • Refine GlobalGrailsPluginTransformation

  • Update GlobalGrailsPluginTransformationSpec

Grails with Spring Boot DevTools

  • Initial integration of Grails with Spring Boot DevTools

  • Add GrailsSourceCompiler

  • Remove deprecated DirectoryWatcher related

RunCommand

  • Initial support Grails Single File Application running in CLI

  • Allow Grails load the specified primary sources

  • Add GrailsGormCompilerAutoConfiguration

  • Update GroovyCompiler

  • Update GrailsApplicationCompilerAutoConfiguration

πŸš€ Dependency Upgrades

  • Upgrade to AspectJ 1.9.25.1 #1261

  • Upgrade to AspectJ 1.9.25 #1233

  • Upgrade to Eclipse Expressly 5.0.0 #121

  • Upgrade to Geb 8.0.1 #1268

  • Upgrade to Grace Asset Pipeline Plugin 7.0.0-M2 #1289

  • Upgrade to Grace Asset Pipeline Plugin 7.0.0-M1 #1115

  • Upgrade to Grace Async 7.0.0-M1 #1116

  • Upgrade to Grace Data 2024.0.0-M1 #1118

  • Upgrade to Grace Data Hibernate 2024.0.0-M1 #1119

  • Upgrade to Grace Data MongoDB 2024.0.0-M1 #1120

  • Upgrade to Grace Doc Engine 2.0.0-M1 #1143

  • Upgrade to Grace Events 7.0.0-M1 #1122

  • Upgrade to Gradle 8.14.3 #1127

  • Upgrade to Gradle Codenarc plugin 3.6.0 #1222

  • Upgrade to Gradle Checkstyle plugin 10.26.1 #1221

  • Upgrade to Gradle JaCoCo plugin 0.8.13 #1223

  • Upgrade to Gradle Plugin Publish Plugin 2.0.0 #1284

  • Upgrade to Gradle Tooling API 8.14.3 #1128 #1127

  • Upgrade to Groovy 4.0.29 #1227

  • Upgrade to Groovy 4.0.28 #1134

  • Upgrade to Jackson Databind 2.18.5 #1234

  • Upgrade to Jakarta Expression Language 5.0.1 #1181

  • Upgrade to Maven 3.9.12 #1262

  • Upgrade to Maven 3.9.11 #1129

  • Upgrade to Maven Resolver 1.9.25 #1263

  • Upgrade to Maven Resolver 1.9.24 #1130

  • Upgrade to RxJava 3.1.12 #1228

  • Upgrade to RxJava 3.1.11 #1146

  • Upgrade to Spring Boot 3.4.13 #1265

  • Upgrade to Spring Boot 3.4.12 #1235

  • Upgrade to Spring Boot 3.4.11 #1224

  • Upgrade to Spring Boot 3.4.10 #1177

  • Upgrade to Spring Boot 3.4.9 #1158

  • Upgrade to Spring Boot 3.4.8 #1131

  • Upgrade to Spring Framework 6.2.15 #1266

  • Upgrade to Spring Framework 6.2.14 #1236

  • Upgrade to Spring Framework 6.2.12 #1225

  • Upgrade to Spring Framework 6.2.11 #1178

  • Upgrade to Spring Framework 6.2.10 #1159

  • Upgrade to Spring Framework 6.2.9 #1132

  • Upgrade to Tomcat 10.1.50 #1267

  • Upgrade to Tomcat 10.1.49 #1237

  • Upgrade to Tomcat 10.1.48 #1226

  • Upgrade to Tomcat 10.1.46 #1179

  • Upgrade to Tomcat 10.1.44 #1160

  • Upgrade to Tomcat 10.1.43 #1133

βš™οΈ Tasks

  • v2024.0.0-M2

2024.0.0-M1

πŸ›  Improvements

  • Update README

  • Add release notes for 2024.0.0-M1 #1111

  • Use the new url of Grace binary distribution for sdkMan #1110

  • Provides binary, sources and docs distributions for Grace framework #1109

  • Update Grace Banner #1108

  • Spring Boot 3.3.x is no longer supported #1107

  • Update grace-doc to 2023.3.0 #1106

  • Don’t publish docs to Maven Central and includes it in the distribution #1104

  • Add support for creating Grace 2024 project #1100

  • Update GrailsTests: bannerMode has been bound to properties #1050

πŸš€ Dependency Upgrades

  • Upgrade to AssertJ 3.26.3 #1088

  • Upgrade to Byte Buddy 1.15.11 #1089

  • Upgrade to Commons Codec 1.17.2 #1091

  • Upgrade to Commons Lang3 3.17.0 #1090

  • Upgrade to Commons Text 1.13.1 #1099

  • Upgrade to Gson 2.11.0 #1101

  • Upgrade to H2 2.3.232 #1093

  • Upgrade to Jackson Databind 2.18.4 #1092

  • Upgrade to JUnit Jupiter 5.11.4 #1094

  • Upgrade to JUnit Platform 1.11.4 #1095

  • Upgrade to Mockito 5.14.2 #1102

  • Upgrade to SnakeYAML 2.3 #1096

  • Upgrade to Spring Boot 3.4.6 #1050

  • Upgrade to Spring Boot 3.4.7 #1097

  • Upgrade to Spring Framework 6.2.7 #1051

  • Upgrade to Spring Framework 6.2.8 #1098

βš™οΈ Tasks

  • Release v2024.0.0-M1

  • Update GitHub workflows - Switch to 2024.0.x

  • Next development version: 2024.0.0-SNAPSHOT

2.2 What's new in 2023.x

2023.3.0

⭐️ New Features

  • Support custom Grace banner #1083

  • Add documentation: user guide and api docs #1081

  • Config generate docs step to the release workflow #1080

  • Setup docs workflow #1079

πŸ›  Improvements

  • Change to graceVersion of the app info #1085

  • Exclude obsolete gsp plugin from the plugin list #1084

  • Enhance IntegrationTestGradlePlugin - Deprecation warning of the IdeaModule.testSourceDirs - Migrate to tasks.register() #1074

  • Only show internal commands and features by using flag only, removing flag all #1073 #1042

  • Improve GradleUtil - Use System.in as the standardInput of Gradle’s BuildLauncher - It will make shell command work normally #1072

🐞 Bug Fixes

  • Fixes groovydoc: error parsing Java source file: org/grails/plugins/datasource/DataSourcePluginConfiguration.java #1082

πŸš€ Dependency Upgrades

  • Upgrade to Grace Asset Pipeline Plugin 6.3.0 #1022

  • Upgrade to Grace Async and Events 6.3.0 #1023

  • Upgrade to Grace Cache Plugin 6.3.0 #1024

  • Upgrade to Grace Data 2023.3.0 #1025

  • Upgrade to Grace Data Hibernate 2023.3.0 #1026

  • Upgrade to Grace Data MongoDB 2023.3.0 #1027

  • Upgrade to Grace Database Migration Plugin 6.3.0 #1028

  • Upgrade to Grace Fields Plugin 6.3.0 #1029

  • Upgrade to Grace Geb Plugin 6.3.0 #1030

  • Upgrade to Grace Profile: Base 2023.3.0 #1033

  • Upgrade to Grace Profile: Base 2023.3.1 #1086

  • Upgrade to Grace Profile: Plugin 2023.3.0 #1034

  • Upgrade to Grace Profile: Profile 2023.3.0 #1035

  • Upgrade to Grace Profile: Rest API 2023.3.0 #1036

  • Upgrade to Grace Profile: Starter 2023.3.0 #1037

  • Upgrade to Grace Profile: Web 2023.3.0 #1038

  • Upgrade to Grace Profile: Web Plugin 2023.3.0 #1039

  • Upgrade to Grace Scaffolding 6.3.0 #1031

  • Upgrade to Grace Views 6.3.0 #1032

  • Upgrade to Gradle 8.14.2 #1068

  • Upgrade to Gradle Tooling API 8.14.2 #1069

  • Upgrade to Groovy 4.0.27 #1067

  • Upgrade to Maven 3.9.10 #1070

  • Upgrade to Maven Resolver 1.9.23 #1071

  • Upgrade to Spring Boot 3.3.13 #1076

  • Upgrade to Spring Boot 3.3.12 #1052

  • Upgrade to Spring Framework 6.1.21 #1077

  • Upgrade to Spring Framework 6.1.20 #1053

  • Upgrade to Tomcat 10.1.42 #1078

  • Upgrade to Tomcat 10.1.41 #1066

βš™οΈ Tasks

  • Remove deprecated gradle/actions/wrapper-validation in the release workflow #1075

  • Update github workflows - Upgrade to setup-gradle@v4 - Upgrade to latest ubuntu

  • Release v2023.3.0

πŸ”Œ Plugins

πŸ“œProfiles

2023.3.0-RC2

⭐️ New Features

  • Support create-app for Spring Boot 3.5.0 #1046

  • Add ApplicationCommand commands back to Shell #1063

  • Add support custom fonts for PDF #1064

  • Add support for PDF bookmarks #1057

  • Add flag --all to command profile-info #1042 #1041

πŸ›  Improvements

  • Update README

  • Improve the styles for PDF document #1062

  • Refactor PdfBuilder DocPublisher and PublishPdfTask #1059

  • Introduce ResourceChecker to check resources for YamlTocStrategy #1058

  • Improve the print media styles: hide the nav links and quick reference #1056

  • Improve the section level as HTML headings #1055

  • Improve guide logo and title for doc templates #1054

  • Update docs template’s styles #1047

  • Support docs task’s default sourceDir may be docs or src/docs #1045

  • Command profile-info should show whether the feature is Required or Default #1044

  • Command profile-info should show the extended Profiles #1043

  • Command profile-info support show all the Profile’s commands and features included parent Profile’s #1041

  • Command profile-info should only show the Profile’s internal commands and features #1040

🐞 Bug Fixes

  • Correct the path of the generated single.html #1061

  • Fix wrong src of the logo image in doc templates #1060

πŸš€ Dependency Upgrades

  • Upgrade to Gradle 8.14 #1048

  • Upgrade to Gradle Tooling API 8.14 #1049

βš™οΈ Tasks

  • Release v2023.3.0-RC2

2023.3.0-RC1

This release is based on Spring Boot 3.3.11 and Spring Framework to 6.1.19.

  • Upgrade to Groovy 4.0.26, Gradle 8.13, Tomcat 10.1.40

  • Refactor grace-docs and GrailsDocGradlePlugin, now you can use org.graceframework.grace-doc gradle plugin to generate guide

  • bootstrap feature in base profile has upgrade to 5.3.5

  • Add grace-datastore-gorm-tck and some more dependencies to BOM

For a complete list of changes made in this release see [this project on GitHub](https://github.com/orgs/graceframework/projects/8).

⭐️ New Features

  • Update docs styles: make logo on the left and nav links on the right #1019

  • Refactor GrailsDocGradlePlugin: register tasks PublishGuideTask and PublishPdfTask #1018

  • Rename PublishPdf to PublishPdfTask #1017

  • Enhance PublishGuideTask and remove duplicated PublishGuide #1016

  • Add dependency gradleApi() to fix NoSuchMethodError: ScriptBytecodeAdapter.createRange(java.lang.Object, java.lang.Object, boolean, boolean) #1014

  • Enhance PublishPdf: Make it CompileStatic and remove property 'outputDirectory' #1015

  • Remove grace-docs' dependency on Gradle Api #1012

  • Update DocPublisherTask: migrate to groovy.ant.AntBuilder #1011

  • Update The radeox macros to clean up Gradle task related annotations #1010

  • Move Gradle related tasks to grace-gradle-plugin * MigrateLegacyDocs * PublishGuide * PublishPdf #1009

  • Remove CreateReleaseDropDownTask #1008

  • Update doc templates: clean unused scripts #1007

  • Add input properties asciidoc and language to PublishGuideTask #1006

  • Explicitly set the source and target compatibility of PublishGuideTask #1005

  • Add dependency grace-docs directly to gradle plugin #1004

  • Add more dependencies to BOM #1000

  • Add grace-datastore-gorm-tck dependency to BOM #996

πŸ›  Improvements

  • Update README - Add information about Grace vs Spring Boot - Update the badge of Spring Boot

  • Rerun some skipped tests - GrailsWebDataBinderSpec - EntityTransformTests - InheritanceWithValidationTests - DomainConstraintGettersSpec - DefaultXmlRendererSpec #1020

  • Change file and task name from grails-doc-files.jar to grace-doc-resources.jar #1003

  • Don’t provide database driver dependency when using mongodb feature #1001 #939

  • Remove unused mongodb-java-driver in libs.versions.toml #1002

🐞 Bug Fixes

  • Remove SoftwareVersionSpec: cause SoftwareVersion already removed #1013 #1008

  • Correct the artifactId of Asset Pipeline Plugin in BOM #999

  • Remove obsolete grails.factories in Services plugin #998

  • Correct the artifactId of Asset Pipeline Plugin in BOM #997

  • Remove grace-test-suite-* dependencies in the generated BOM #995

πŸš€ Dependency Upgrades

  • Upgrade to AspectJ 1.9.24 #994

  • Upgrade to Grace Asset Pipeline Plugin 6.3.0-RC1 #969

  • Upgrade to Grace Async and Events 6.3.0-RC1 #970

  • Upgrade to Grace Cache Plugin 6.3.0-RC1 #971

  • Upgrade to Grace Data 2023.3.0-RC1 #972

  • Upgrade to Grace Data Hibernate 2023.3.0-RC1 #973

  • Upgrade to Grace Data MongoDB 2023.3.0-RC1 #974

  • Upgrade to Grace Database Migration Plugin 6.3.0-RC1 #975

  • Upgrade to Grace Fields Plugin 6.3.0-RC1 #976

  • Upgrade to Grace Geb Plugin 6.3.0-RC1 #977

  • Upgrade to Grace Profile: Base 2023.3.0-RC1 #980

  • Upgrade to Grace Profile: Plugin 2023.3.0-RC1 #981

  • Upgrade to Grace Profile: Rest API 2023.3.0-RC1 #982

  • Upgrade to Grace Profile: Starter 2023.3.0-RC1 #983

  • Upgrade to Grace Profile: Web 2023.3.0-RC1 #984

  • Upgrade to Grace Profile: Web Plugin 2023.3.0-RC1 #985

  • Upgrade to Grace Profile: Profile 2023.3.0-RC1 #986

  • Upgrade to Grace Scaffolding 6.3.0-RC1 #978

  • Upgrade to Grace Views 6.3.0-RC1 #979

  • Upgrade to Java Parser 3.26.4 #987

  • Upgrade to Jsoup 1.18.3 #989

  • Upgrade to Mockito 5.11.0 #990

  • Upgrade to Spring Boot 3.3.11 #992

  • Upgrade to Spring Framework 6.1.19 #991

  • Upgrade to SLF4J 2.0.17 #988

  • Upgrade to Tomcat 10.1.40 #993

βš™οΈ Tasks

  • Release v2023.3.0-RC1

πŸ”Œ Plugins

πŸ“œProfiles

2023.3.0-M2

Include total 127 issues were closed https://github.com/orgs/graceframework/projects/7

⭐️ New Features

  • Introduce GlobalCommand to indicate some commands alwasy be available #967

  • Add GORM for MongoDB artifacts to BOM #965

  • Rewrite the Script Commands list-plugins plugin-info in Profile base to Shell CLI Commands #962

  • Support skipping some features with flag --skip on create-app #961

  • Add new property examples to CommandDescription #959

  • Support specific package name using command flag 'package-name' #957

  • Add liquibase-core and liquibase-hibernate5 to BOM #956

  • Support specific Database type using command flag 'database' #938 #939

  • Support Groovy Template in the skeleton of Profile #938

πŸ›  Improvements

  • Update README - Update badge versions of Grace and Spring Boot - Add more Plugins and Guides

  • Make list-profiles profile-info available in the project context, currently only globally #963

  • Refine the help message of help command #960

  • Refine the help message of create-app create-plugin create-profile #958

  • Exclude logback-spring.xml when packaging plugins #948

  • Increase the output width of application running status and plugin list information tables #947

  • Update README Update badge versions of Groovy and Spring Boot

  • No need to configure the assetsPath of asset-pipeline plugin #946

  • Support using methods instead of Closures in BootStrap class #943

  • grace-doc only support Gradle 8.0+ because of groovy-ant #937

  • Raise the minimum supported version of Gradle to 7.6.4+ or 8.3+ #936

  • Spring Dependency Management Plugin: Disable the customization of a generated pom

  • Also remove unused methods resolveSpringBootVersion(), resolveSpringFrameworkVersion(), resolveTomcatVersion() #934

  • Update README Update badge of Spring Boot version

🐞 Bug Fixes

  • The 'applicationClass' of Integration should be a valid main Application class annotated with @SpringBootApplication #964

  • Fixed CreateAppCommandSpec #961

  • Update DocPublisher: migrate to groovy.ant.AntBuilder #935

  • Improve GrailsGradlePlugin: Optimize the generated POM of plugin * GrailsGradlePlugin: Remove duplicated spring-boot-dependencies

πŸš€ Dependency Upgrades

  • Upgrade to AspectJ 1.9.23 #953

  • Upgrade to Grace Asset Pipeline Plugin 6.3.0-M1 #904

  • Upgrade to Grace Async and Events 6.3.0-M1 #931

  • Upgrade to Grace Cache Plugin 6.3.0-M1 #921

  • Upgrade to Grace Data 2023.3.0-M1 #922

  • Upgrade to Grace Data Migration Plugin 6.3.0-M1 #908

  • Upgrade to Grace Data MongoDB 2023.3.0-M1 #966

  • Upgrade to Grace Data Hibernate 2023.3.0-M1 #923

  • Upgrade to Grace Fields Plugin 6.3.0-M1 #924

  • Upgrade to Grace Geb Plugin 6.3.0-M1 #919

  • Upgrade to Grace Profile: Base 2023.3.0-M2 #925

  • Upgrade to Grace Profile: Plugin 2023.3.0-M2 #926

  • Upgrade to Grace Profile: Profile 2023.3.0-M2 #920

  • Upgrade to Grace Profile: Rest API 2023.3.0-M2 #927

  • Upgrade to Grace Profile: Starter 2023.3.0-M2 #915

  • Upgrade to Grace Profile: Web 2023.3.0-M2 #928

  • Upgrade to Grace Profile: Web Plugin 2023.3.0-M2 #929

  • Upgrade to Grace Scaffolding 6.3.0-M1 #930

  • Upgrade to Grace Views 6.3.0-M1 #905

  • Upgrade to Gradle 8.13 #954

  • Upgrade to Gradle 8.12.1 #944

  • Upgrade to Gradle Tooling API 8.13 #955

  • Upgrade to Gradle Tooling API 8.12.1 #945

  • Upgrade to Groovy 4.0.26 #952

  • Upgrade to Groovy 4.0.25 #933

  • Upgrade to Spring Boot 3.3.10 #949

  • Upgrade to Spring Boot 3.3.9 #940

  • Upgrade to Spring Boot 3.3.8 #932

  • Upgrade to Spring Framework 6.1.18 #950

  • Upgrade to Spring Framework 6.1.17 #941

  • Upgrade to Tomcat 10.1.39 #951

  • Upgrade to Tomcat 10.1.36 #942

βš™οΈ Tasks

  • Release v2023.3.0-M2

πŸ”Œ Plugins

πŸ“œProfiles

2023.3.0-M1

πŸ›  Improvements

  • Spring Boot 3.2 is no longer supported #894

  • Remove the workaround for logback 1.5.7+ in Spring Boot 3.3 #895

πŸš€ Dependency Upgrades

  • Upgrade to AssertJ 3.25.3 #891

  • Upgrade to Commons Lang3 3.14.0 #892

  • Upgrade to Grace Profile: Base 2023.3.0-M1 #896

  • Upgrade to Grace Profile: Plugin 2023.3.0-M1 #897

  • Upgrade to Grace Profile: Profile 2023.3.0-M1 #898

  • Upgrade to Grace Profile: Rest API 2023.3.0-M1 #899

  • Upgrade to Grace Profile: Starter 2023.3.0-M1 #900

  • Upgrade to Grace Profile: Web 2023.3.0-M1 #901

  • Upgrade to Grace Profile: Web Plugin 2023.3.0-M1 #902

  • Upgrade to Jackson Databind 2.17.3 #893

  • Upgrade to Spring Boot 3.3.7 #520

βš™οΈ Tasks

  • Release v2023.3.0-M1

  • Disables Groovy Joint Validation Build

  • Switch to '2023.3.x' Update github workflows

  • Next development version: 2023.3.0-SNAPSHOT

πŸ“œProfiles

2023.2.0

πŸ›  Improvements

  • Update dependencies of grace-web-jsp #889

  • Bean jspTagLibraryResolver is created only if JSTL exists #888

  • Improve assemble task and remove deprecation warnings #887

  • Code format

  • Add dependencies jsp jstl el to grace-web-jsp #886

  • Make jakarta-servlet as a compileOnlyApi Dependency #885

  • Update build scripts to avoid deprecation warnings with Gradle 8 #884

πŸš€ Dependency Upgrades

  • Upgrade to Grace Asset Pipeline Plugin 6.2.0 #867

  • Upgrade to Grace Async and Events 6.2.0 #868

  • Upgrade to Grace Cache Plugin 6.2.0 #869

  • Upgrade to Grace Data 2023.2.0 #870

  • Upgrade to Grace Data Hibernate 2023.2.0 #871

  • Upgrade to Grace Database Migration Plugin 6.2.0 #872

  • Upgrade to Grace Fields Plugin 6.2.0 #873

  • Upgrade to Grace Geb Plugin 6.2.0 #874

  • Upgrade to Grace Profile: Base 2023.2.0 #875

  • Upgrade to Grace Profile: Plugin 2023.2.0 #876

  • Upgrade to Grace Profile: Profile 2023.2.0 #877

  • Upgrade to Grace Profile: Rest API 2023.2.0 #878

  • Upgrade to Grace Profile: Starter 2023.2.0 #879

  • Upgrade to Grace Profile: Web 2023.2.0 #880

  • Upgrade to Grace Profile: Web Plugin 2023.2.0 #881

  • Upgrade to Grace Scaffolding 6.2.0 #882

  • Upgrade to Grace Views 6.2.0 #883

βš™οΈ Tasks

  • Release v2023.2.0

πŸ”Œ Plugins

πŸ“œProfiles

2023.2.0-RC1

⭐️ New Features

  • Auto-configure GrailsApplication and GrailsPluginManager #857

  • Supports for Multiple Data Sources #858

πŸ›  Improvements

  • Improves CreateAppCommand: Use explicit assignment instead of "space-assignment" #865

  • Improve conditions on DataSourcePluginConfiguration #859

🐞 Bug Fixes

  • The value of basePath in GroovyPageUnitTestResourceLoader is wrong after initialization #864

  • Remove Gradle Extra Configurations Plugin #850

πŸš€ Dependency Upgrades

  • Upgrade to CodeNarc Gradle Plugin 3.5.0 #854

  • Upgrade to Checkstyle Gradle Plugin 10.12.4 #852

  • Upgrade to Grace Asset Pipeline Plugin 6.2.0-RC1 #822

  • Upgrade to Grace Async and Events 6.2.0-RC1 #823

  • Upgrade to Grace Cache Plugin 6.2.0-RC1 #824

  • Upgrade to Grace Data 2023.2.0-RC1 #825

  • Upgrade to Grace Data Hibernate 2023.2.0-RC1 #826

  • Upgrade to Grace Database Migration Plugin 6.2.0-RC1 #827

  • Upgrade to Grace Fields Plugin 6.2.0-RC1 #828

  • Upgrade to Grace Geb Plugin 6.2.0-RC1 #829

  • Upgrade to Grace Profile: Base 2023.2.0-RC1 #830

  • Upgrade to Grace Profile: Plugin 2023.2.0-RC1 #831

  • Upgrade to Grace Profile: Profile 2023.2.0-RC1 #832

  • Upgrade to Grace Profile: Rest API 2023.2.0-RC1 #833

  • Upgrade to Grace Profile: Starter 2023.2.0-RC1 #834

  • Upgrade to Grace Profile: Web 2023.2.0-RC1 #835

  • Upgrade to Grace Profile: Web Plugin 2023.2.0-RC1 #836

  • Upgrade to Grace Scaffolding 6.2.0-RC1 #837

  • Upgrade to Grace Views 6.2.0-RC1 #838

  • Upgrade to Gradle 8.12 #848

  • Upgrade to Gradle Tooling API 8.12 #849

  • Upgrade to JaCoCo Gradle Plugin 0.8.12 #853

  • Upgrade to Spring Dependency Management Plugin 1.1.7 #856

  • Upgrade to Spring Framework 6.1.16 #855

  • Upgrade to Test Retry Gradle Plugin 1.6.0 #851

βš™οΈ Tasks

  • Release v2023.2.0-RC1

2023.2.0-M3

⭐️ New Features

  • Setup GitHub Workflow to publish Grace plugins #845

  • Publish Grace plugins to the Gradle Plugin Portal #844

πŸ›  Improvements

  • Define common properties for all Gradle plugins #846

🐞 Bug Fixes

  • Remove all the unnecessary Gradle plugins properties files #843

  • Task publishMavenPublication should be declared an explicit dependency on Sign #842

  • Failed to publish publication 'graceXxxPluginMarkerMaven' to repository 'Sonatype' #841

  • Enable pluginMaven publication for Gradle plugins by removing automatedPublishing = false #840

  • Update DocPublisher: migrate to groovy.ant.AntBuilder #839

βš™οΈ Tasks

  • Release v2023.2.0-M3

2023.2.0-M2

⭐️ New Features

  • Grace destroy command destroy as the opposite of generate, it will figure out what generate did, and undo it. #803

  • Grace generate command #771

  • Grace Generator API #772

πŸ›  Improvements

  • Improve Gradle build scripts #820

  • Update DataSourcePluginConfigurationTests #819

  • Remove bean transactionManager from DataSource plugin #817

  • Add plugin Generator #815

  • Enhance I18nGenerator #814

  • Use Apache Commons Text #810

  • Add @ConditionalOnMissingBean on beans in UrlMappingsPluginConfiguration #809

  • Add i18n Generator #807

  • Refactor AbstractGenerator #806

  • Refactor Generator API #805

  • Update Interceptor generator template #804

  • Generator: generate operation can be revoked #802

  • Refactor Generator API #801

  • Update Gradle Build Scripts #799

  • Improvements for GrailsProfileGradlePlugin #796

  • Exclude micrometer in the distribution of Grace #795

  • Change PluginDefiner org.grails.plugins to org.graceframework.plugins #777

  • Improve GrailsPluginGradlePlugin with no functional changes #776

  • Plugin projects should not have bootRun tasks enabled by default #775

  • Plugin projects should not create tasks such as console shell ApplicationCommand runCommand runScript pathingJar #774

  • Allows to set a name for the Script Command #773

  • Allows to create a project that don’t include any features #770

  • Fix CommandLineParser throw ArrayIndexOutOfBoundsException when the option value is empty #769

  • Disables Gradle console output coloring in interactive mode #768

  • Register GrailsExtension in GroovyPagePlugin #767

  • Support TemplateRenderer.template() to find specific the root directory of the templates #766

  • Support GrailsConsole to customize category and color of status message #765

  • Add new properties to CommandArgument: type aliases banner #764

  • Allow commands to display help information on their own #763

πŸš€ Dependency Upgrades

  • Upgrade to Grace Asset Pipeline Plugin 6.2.0-M2 #813

  • Upgrade to Grace Async and Events 6.2.0-M1 #779

  • Upgrade to Grace Cache Plugin 6.2.0-M1 #780

  • Upgrade to Grace Data 2023.2.0-M1 #781

  • Upgrade to Grace Data Hibernate 2023.2.0-M1 #782

  • Upgrade to Grace Database Migration Plugin 6.2.0-M1 #783

  • Upgrade to Grace Fields Plugin 6.2.0-M1 #784

  • Upgrade to Grace Geb Plugin 6.2.0-M1 #785

  • Upgrade to Grace Profile: Base 2023.2.0-M2 #786

  • Upgrade to Grace Profile: Plugin 2023.2.0-M2 #787

  • Upgrade to Grace Profile: Profile 2023.2.0-M2 #788

  • Upgrade to Grace Profile: Rest API 2023.2.0-M2 #789

  • Upgrade to Grace Profile: Starter 2023.2.0-M2 #790

  • Upgrade to Grace Profile: Web 2023.2.0-M2 #791

  • Upgrade to Grace Profile: Web Plugin 2023.2.0-M2 #792

  • Upgrade to Grace Scaffolding 6.2.0-M1 #793

  • Upgrade to Grace Views 6.2.0-M1 #794

  • Upgrade to Gradle 8.11.1 #797

  • Upgrade to Gradle Tooling API 8.11.1 #798

  • Upgrade to Maven 3.9.9 #800

  • Upgrade to Tomcat 10.1.34 #812

βš™οΈ Tasks

  • Release v2023.2.0-M2

2023.2.0-M1

πŸ›  Improvements

  • Performs a SDKMan Minor Release for Milestone releases and Release Candidates #761

  • Improve create-app command for Spring Boot versions #753

  • Update README

  • Update github workflows

πŸš€ Dependency Upgrades

  • Upgrade to Byte Buddy 1.14.19 #741

  • Upgrade to Commons Codec 1.16.1 #742

  • Upgrade to Commons Lang3 3.13.0 #743

  • Upgrade to Grace Profile: Base 2023.2.0-M1 #754

  • Upgrade to Grace Profile: Plugin 2023.2.0-M1 #755

  • Upgrade to Grace Profile: Profile 2023.2.0-M1 #756

  • Upgrade to Grace Profile: Rest API 2023.2.0-M1 #757

  • Upgrade to Grace Profile: Starter 2023.2.0-M1 #758

  • Upgrade to Grace Profile: Web 2023.2.0-M1 #759

  • Upgrade to Grace Profile: Web Plugin 2023.2.0-M1 #760

  • Upgrade to H2 2.2.224 #744

  • Upgrade to HSQLDB 2.7.3 #745

  • Upgrade to JUnit Jupiter 5.10.5 #751

  • Upgrade to JUnit Platform 1.10.5 #752

  • Upgrade to Mockito 5.7.0 #746

  • Upgrade to SLF4J 2.0.16 #747

  • Upgrade to SnakeYAML 2.2 #748

  • Upgrade to Spring Boot 3.2.12 #749

  • Upgrade to Spring Framework 6.1.15 #750

βš™οΈ Tasks

  • Release v2023.2.0-M1

  • Next development version: 2023.2.0-SNAPSHOT

2023.1.1

πŸ›  Improvements

  • Update DataSourcePluginConfigurationTests #818

  • Add @ConditionalOnMissingBean on beans in UrlMappingsPluginConfiguration #808

  • Update README Update current version for Groovy Badge

🐞 Bug Fixes

  • Remove bean transactionManager from DataSource plugin #816

πŸš€ Dependency Upgrades

  • Upgrade to Grace Asset Pipeline Plugin 6.1.1 #862

  • Upgrade to Grace Data 2023.1.1 #860

  • Upgrade to Grace Data Hibernate 2023.1.1 #861

  • Upgrade to Tomcat 10.1.34 #811

βš™οΈ Tasks

  • Release v2023.1.1

  • Next development version: 2023.1.1-SNAPSHOT

2023.1.0

πŸ›  Improvements

  • Plugin gsp dependency on plugin i18n should be optional #737

🐞 Bug Fixes

  • Fixed bean grailsResourceLocator name conflict in CoreConfiguration and GroovyPagesAutoConfiguration #736

πŸš€ Dependency Upgrades

  • Upgrade to Grace Asset Pipeline Plugin 6.1.0 #719

  • Upgrade to Grace Async and Events 6.1.0 #720

  • Upgrade to Grace Cache Plugin 6.1.0 #721

  • Upgrade to Grace Data 2023.1.0 #722

  • Upgrade to Grace Data Hibernate 2023.1.0 #723

  • Upgrade to Grace Database Migration Plugin 6.1.0 #724

  • Upgrade to Grace Fields Plugin 6.1.0 #725

  • Upgrade to Grace Geb Plugin 6.1.0 #726

  • Upgrade to Grace Profile: Base 2023.1.0 #727

  • Upgrade to Grace Profile: Plugin 2023.1.0 #728

  • Upgrade to Grace Profile: Profile 2023.1.0 #729

  • Upgrade to Grace Profile: Rest API 2023.1.0 #730

  • Upgrade to Grace Profile: Starter 2023.1.0 #731

  • Upgrade to Grace Profile: Web 2023.1.0 #732

  • Upgrade to Grace Profile: Web Plugin 2023.1.0 #733

  • Upgrade to Grace Scaffolding 6.1.0 #734

  • Upgrade to Grace Views 6.1.0 #735

βš™οΈ Tasks

  • Release v2023.1.0

πŸ”Œ Plugins

πŸ“œProfiles

2023.1.0-RC1

⭐️ New Features

  • Binding variable config to Console and Shell #709

πŸ›  Improvements

  • Improve CreateAppCommand Remove some unnecessary directories and extra configurations when creating a minimal application #712

  • Grace Plugin Controllers: Update additional Spring Boot configuration metadata files #711

  • Move from GroovyPageForkCompileTask’s deprecated Project.javaexec(Action) method to ExecOperations.javaexec(Action) #708

🐞 Bug Fixes

  • Fixed a bug due to use Configuration Properties: GroovyPagesProperties #713

πŸš€ Dependency Upgrades

  • Upgrade to Grace Asset Pipeline Plugin 6.1.0-RC1 #688

  • Upgrade to Grace Async and Events 6.1.0-RC1 #689

  • Upgrade to Grace Cache Plugin 6.1.0-RC1 #690

  • Upgrade to Grace Data 2023.1.0-RC1 #691

  • Upgrade to Grace Data Hibernate 2023.1.0-RC1 #692

  • Upgrade to Grace Database Migration Plugin 6.1.0-RC1 #693

  • Upgrade to Grace Fields Plugin 6.1.0-RC1 #694

  • Upgrade to Grace Geb Plugin 6.1.0-RC1 #695

  • Upgrade to Grace Profile: Base 2023.1.0-RC1 #696

  • Upgrade to Grace Profile: Plugin 2023.1.0-RC1 #697

  • Upgrade to Grace Profile: Profile 2023.1.0-RC1 #698

  • Upgrade to Grace Profile: Rest API 2023.1.0-RC1 #699

  • Upgrade to Grace Profile: Starter 2023.1.0-RC1 #700

  • Upgrade to Grace Profile: Web 2023.1.0-RC1 #701

  • Upgrade to Grace Profile: Web Plugin 2023.1.0-RC1 #702

  • Upgrade to Grace Scaffolding 6.1.0-RC1 #703

  • Upgrade to Grace Views 6.1.0-RC1 #704

  • Upgrade to Gradle Nexus Publish Plugin 2.0.0 #707

  • Upgrade to Groovy 4.0.24 #705

  • Upgrade to Tomcat 10.1.33 #706

βš™οΈ Tasks

  • Release v2023.1.0-RC1

2023.1.0-M3

⭐️ New Features

  • Support creating a minimal application by using a minimal flag #679

  • Grace Plugin Url Mappings: Generating Spring Boot configuration metadata files #677

  • Grace Plugin Rest: Generating Spring Boot configuration metadata files #676

  • Grace Plugin Mimetypes: Generating Spring Boot configuration metadata files #675

  • Grace Plugin Interceptors: Generating Spring Boot configuration metadata files #674

  • Grace Plugin Domain Class: Generating Spring Boot configuration metadata files #673

  • Grace Plugin Codecs: Generating Spring Boot configuration metadata files #672

  • Grace Plugin i18n: Generating Spring Boot configuration metadata files #671

  • Grace Plugin Datasource: Generating Spring Boot configuration metadata files #670

  • Grace Plugin Databinding: Generating Spring Boot configuration metadata files #669

  • Grace Plugin Core: Generating Spring Boot configuration metadata files #668

  • Grace Plugin Converters: Generating Spring Boot configuration metadata files #667

  • Grace Plugin Controllers: Generating Spring Boot configuration metadata files #666

  • Grace Plugin API: Generating Spring Boot configuration metadata files #665

  • Grace Boot: Generating Spring Boot configuration metadata files #664

  • Enabling Configuration Properties for GSP Plugin #663

πŸ›  Improvements

  • Add more Mime Types to the default configuration #686

  • Cleanup Dependencies #685

  • Enhances Groovy awared AutoProxy for AOP #684

  • Remove Jakarta Servlet from Grace distribution #683

  • Excluding all the transitive dependencies of grace-datastore-core #682

  • Make jakarta-servlet as a Compile-only Dependency #681

  • Improvements for updating to new Spring Boot versions #680

🐞 Bug Fixes

  • Fix jspTagLibraryResolver bean definition error in WebSetupSpecInterceptor #678

πŸš€ Dependency Upgrades

  • Upgrade to Grace Asset Pipeline Plugin 6.1.0-M3 #643

  • Upgrade to Grace Async and Events 6.1.0-M3 #644

  • Upgrade to Grace Cache Plugin 6.1.0-M3 #645

  • Upgrade to Grace Data 2023.1.0-M3 #646

  • Upgrade to Grace Data Hibernate 2023.1.0-M3 #647

  • Upgrade to Grace Database Migration Plugin 6.1.0-M3 #648

  • Upgrade to Grace Fields Plugin 6.1.0-M3 #649

  • Upgrade to Grace Geb Plugin 6.1.0-M3 #650

  • Upgrade to Grace Profile: Base 2023.1.0-M3 #651

  • Upgrade to Grace Profile: Plugin 2023.1.0-M3 #652

  • Upgrade to Grace Profile: Profile 2023.1.0-M3 #653

  • Upgrade to Grace Profile: Rest API 2023.1.0-M3 #654

  • Upgrade to Grace Profile: Starter 2023.1.0-M3 #655

  • Upgrade to Grace Profile: Web 2023.1.0-M3 #656

  • Upgrade to Grace Profile: Web Plugin 2023.1.0-M3 #657

  • Upgrade to Grace Scaffolding Plugin 6.1.0-M3 #658

  • Upgrade to Grace Views 6.1.0-M3 #659

  • Upgrade to Tomcat 10.1.31 #661

βš™οΈ Tasks

  • Release v2023.1.0-M3

2023.1.0-M2

⭐️ New Features

  • Auto-Configure Bean proxyHandler #626

  • Auto-Configure Groovy-aware Bean org.springframework.aop.config.internalAutoProxyCreator #627

  • Auto-Configure DomainClass Plugin #630

  • Auto-Configure Converters Plugin #628

  • Auto-Configure DataSource Plugin #629

πŸ›  Improvements

  • Make validateableConstraintsEvaluator as Primary bean #641

  • Support specific Spring Boot version using command flag boot-version #640

  • Make gradle-tooling-api scope only for shell #639

  • Remove submodule grace-web-boot #638

  • Add events plugin to grace-dependencies #636

  • ApplicationClassInjector: No need to exclude auto configure classes for Application #635

  • Enhance GrailsLayoutViewResolverPostProcessor #634

  • Make bean grailsLayoutViewResolverPostProcessor auto configure #633

  • Remove unused bean abstractViewResolver #632

  • Remove unused bean abstractGrailsResourceLocator #631

🐞 Bug Fixes

  • Fixes wrong @ConditionalOnProperty with grails.web.hiddenmethod.filter.enabled #637

πŸš€ Dependency Upgrades

  • Upgrade to Grace Asset Pipeline Plugin 6.1.0-M2 #609

  • Upgrade to Grace Async and Events 6.1.0-M2 #610

  • Upgrade to Grace Cache Plugin 6.1.0-M2 #611

  • Upgrade to Grace Data 2023.1.0-M2 #612

  • Upgrade to Grace Data Hibernate 2023.1.0-M2 #613

  • Upgrade to Grace Database Migration Plugin 6.1.0-M2 #614

  • Upgrade to Grace Fields Plugin 6.1.0-M2 #615

  • Upgrade to Grace Geb Plugin 6.1.0-M2 #616

  • Upgrade to Grace Profile: Base 2023.1.0-M2 #617

  • Upgrade to Grace Profile: Plugin 2023.1.0-M2 #618

  • Upgrade to Grace Profile: Profile 2023.1.0-M2 #619

  • Upgrade to Grace Profile: Rest API 2023.1.0-M2 #620

  • Upgrade to Grace Profile: Starter 2023.1.0-M2 #621

  • Upgrade to Grace Profile: Web 2023.1.0-M2 #622

  • Upgrade to Grace Profile: Web Plugin 2023.1.0-M2 #623

  • Upgrade to Grace Scaffolding 6.1.0-M2 #624

  • Upgrade to Grace Views 6.1.0-M2 #625

βš™οΈ Tasks

  • Release v2023.1.0-M2

2023.1.0-M1

πŸ›  Improvements

  • Remove the mandatory setting that allows beans to override and circular references #607

  • Enhance ResourceTransform #606

  • Make grailsResourceLocator Bean Auto-Configure #605

  • Update Badges Update Spring Boot version

  • Adds more badges Java, Groovy, Spring Boot

🐞 Bug Fixes

  • Fix Jakarta JSTL Config package name wrong #603

  • Compile profile failed with an exception when using Gradle 8 #600

  • Fixes CLI error when creating a Plugin of profile plugin #590

πŸš€ Dependency Upgrades

  • Upgrade to Apache Ant 1.10.15 #593

  • Upgrade to AsciidoctorJ 2.5.13 #571

  • Upgrade to AspectJ 1.9.22.1 #551

  • Upgrade to AssertJ 3.24.2 #552

  • Upgrade to Byte Buddy 1.14.16 #553

  • Upgrade to Grace Asset Pipeline Plugin 6.1.0-M1 #572

  • Upgrade to Grace Async and Events 6.1.0-M1 #573

  • Upgrade to Grace Cache Plugin 6.1.0-M1 #574

  • Upgrade to Grace Data 2023.1.0-M1 #575

  • Upgrade to Grace Data Hibernate 2023.1.0-M1 #576

  • Upgrade to Grace Database Migration Plugin 6.1.0-M1 #577

  • Upgrade to Grace Fields Plugin 6.1.0-M1 #578

  • Upgrade to Grace Geb Plugin 6.1.0-M1 #579

  • Upgrade to Grace Profile: Base 2023.1.0-M1 #580

  • Upgrade to Grace Profile: Plugin 2023.1.0-M1 #581

  • Upgrade to Grace Profile: Profile 2023.1.0-M1 #582

  • Upgrade to Grace Profile: Rest API 2023.1.0-M1 #583

  • Upgrade to Grace Profile: Starter 2023.1.0-M1 #584

  • Upgrade to Grace Profile: Web 2023.1.0-M1 #585

  • Upgrade to Grace Profile: Web Plugin 2023.1.0-M1 #586

  • Upgrade to Grace Scaffolding 6.1.0-M1 #587

  • Upgrade to Grace Views 6.1.0-M1 #588

  • Upgrade to Gradle Git Properties 2.4.2 #554

  • Upgrade to Groovy 4.0.23 #594

  • Upgrade to Gson 2.10.1 #555

  • Upgrade to HSQLDB 2.7.2 #556

  • Upgrade to Jackson Databind 2.15.4 #557

  • Upgrade to Jakarta Inject 2.0.1 #558

  • Upgrade to Jakarta Servlet JSP 3.1.1 #559

  • Upgrade to Jakarta Servlet JSP JSTL 3.0.2 #560

  • Upgrade to Jakarta XML Bind 4.0.2 #561

  • Upgrade to Java Parser 3.26.2 #562

  • Upgrade to Javassist 3.30.2-GA #563

  • Upgrade to Json Unit 2.40.1 #564

  • Upgrade to Jsoup 1.18.1 #565

  • Upgrade to JUnit Jupiter 5.9.3 #566

  • Upgrade to JUnit Platform 1.9.3 #567

  • Upgrade to Mockito 5.3.1 #568

  • Upgrade to Objenesis 3.4 #569

  • Upgrade to SLF4J 2.0.13 #570

  • Upgrade to Spring Boot 3.1.12 #550

  • Upgrade to Tomcat 10.1.29 #596

  • Upgrade to Tomcat 10.1.30 #598

βš™οΈ Tasks

  • Release v2023.1.0-M1

  • Update github workflows

  • Next development version: 2023.1.0-SNAPSHOT

2023.0.2

🐞 Bug Fixes

  • Compile profile failed with an exception when using Gradle 8 #599

  • Fixes error when creating a Plugin of profile plugin #589

βš™οΈ Tasks

  • Release v2023.0.2

  • Next development version: 2023.0.2-SNAPSHOT

πŸš€ Dependency Upgrades

  • Upgrade to Apache Ant 1.10.15 #591

  • Upgrade to Groovy 4.0.23 #592

  • Upgrade to Tomcat 10.1.29 #595

  • Upgrade to Tomcat 10.1.30 #597

2023.0.1

πŸ›  Improvements

  • Change group and description of Gradle task console and shell #525

  • Change group of Gradle task urlMappingsReport #524

  • Change group of Gradle task runCommand and runScript #523

  • Set group of Gradle task configScript #522

  • Improve ApplicationTemplateCommand Support using command line options in app:template #516

🐞 Bug Fixes

  • Task mergeTestReports shoud explicit depend on test #548

  • Grace BOM: Add missing grace-datastore-web #547

  • Fixes compiling error when a Domain Class with @Resource annotation #545

  • Remove exclude dependency org.codehaus.groovy of grace-datatore-* #544

  • Use ResourceUtils.getURL to resolve the viewsDir location to a java.net.URL #526

  • Fixes link 404 in grace-plugin-dynamic-modules/README.md #515

βš™οΈ Tasks

  • Release v2023.0.1

  • Next development version: 2023.0.1-SNAPSHOT

πŸš€ Dependency Upgrades

  • Upgrade to Caffeine 3.1.8 #546

  • Upgrade to Grace Asset Pipeline Plugin 6.0.1 #527

  • Upgrade to Grace Async and Events 6.0.1 #528

  • Upgrade to Grace Cache Plugin 6.0.1 #529

  • Upgrade to Grace Data 2023.0.1 #530

  • Upgrade to Grace Data Hibernate 2023.0.1 #531

  • Upgrade to Grace Database Migration Plugin 6.0.1 #532

  • Upgrade to Grace Fields Plugin 6.0.1 #533

  • Upgrade to Grace Geb Plugin 6.0.1 #534

  • Upgrade to Grace Profile: Base 2023.0.1 #535

  • Upgrade to Grace Profile: Plugin 2023.0.1 #536

  • Upgrade to Grace Profile: Profile 2023.0.1 #537

  • Upgrade to Grace Profile: Rest API 2023.0.1 #538

  • Upgrade to Grace Profile: Starter 2023.0.1 #539

  • Upgrade to Grace Profile: Web 2023.0.1 #540

  • Upgrade to Grace Profile: Web Plugin 2023.0.1 #541

  • Upgrade to Grace Scaffolding 6.0.1 #542

  • Upgrade to Grace Views 6.0.1 #543

2023.0.0

πŸ›  Improvements

  • Update README.md

  • Set group and description of Gradle task pathingJar and pathingJarCommand #513

  • Set group and description of Gradle task runCommand and runScript #512

  • Set group and description of Gradle task findMainClass #511

  • Set description of Gradle task configScript #510

  • Set group and description of Gradle task compileGroovyPages and compileWebappGroovyPages #509

  • Set group and description of Gradle task urlMappingsReport #508

  • Set group and description of Gradle task buildProperties #507

  • Improvements for GrailsPluginManager and DefaultModuleDescriptorFactory #505

  • Adds new method doDynamicModules() to GrailsPluginManager

  • Refactor DefaultModuleDescriptorFactory

  • Enhance DefaultModuleDescriptorFactory Don’t throw exception when ModuleDescriptor class of module type not found

  • Deprecate grace-plugin-dynamic-modules #504

  • Update DefaultGrailsPluginTests

  • Deprecate grace-plugin-dynamic-modules

  • Update DynamicPlugin, change void doWithDynamicModules() to Closure doWithDynamicModules()

  • Make tests passed Because dependency spring-boot changed to compileOnly #501

  • Cleanup runtime dependencies of gracce-shell #501

  • Ensure that features are applied in a fixed order when creating a project #498

  • Refine ProfileInfoCommand: Check wheather commands deprecated of profile, and append [deprecated] to its description #444

  • Change URL of grails-bom to mavenCentral() repository #443

🐞 Bug Fixes

  • Disable banner and logging off when executing ./gradlew urlMappingsReport #506

  • Fixed NPE error with DynamicPlugin.doWithDynamicModules() #504

  • Fixes StaticResourceLoaderTests#500

  • Fixes create-app error with App Template #499

  • Don’t exclude **/.gitkeep when creating a new project #497

  • Remove exclusions of dependency groovy #496

  • Optimize SLF4J dependencies for all modules #495

  • Exclude grace-shell.tar in the distribution of Grace #494

  • Singleton as the defualt scope of Controllers #493

  • Use HttpMethod.valueOf instead of resolve method

βš™οΈ Tasks

  • Release v2023.0.0

  • Start building against Grace Fields Plugin 6.0.0 snapshots #481

  • Start building against Grace Scaffolding 6.0.0 snapshots #490

  • Start building against Grace Profile: Web 2023.0.0 snapshots #488

  • Start building against Grace Profile: Base 2023.0.0 snapshots #483

πŸš€ Dependency Upgrades

  • Upgrade to Apache Ant 1.10.14 #503

  • Upgrade to Grace Asset Pipeline Plugin 6.0.0 #475

  • Upgrade to Grace Async and Events 6.0.0 #476

  • Upgrade to Grace Cache Plugin 6.0.0 #477

  • Upgrade to Grace Data 2023.0.0 #478

  • Upgrade to Grace Data Hibernate 2023.0.0 #479

  • Upgrade to Grace Database Migration Plugin 6.0.0 #480

  • Upgrade to Grace Fields Plugin 6.0.0 #481

  • Upgrade to Grace Geb Plugin 6.0.0 #482

  • Upgrade to Grace Profile: Base 2023.0.0 #483

  • Upgrade to Grace Profile: Plugin 2023.0.0 #484

  • Upgrade to Grace Profile: Profile 2023.0.0 #485

  • Upgrade to Grace Profile: Rest API 2023.0.0 #486

  • Upgrade to Grace Profile: Starter 2023.0.0 #487

  • Upgrade to Grace Profile: Web 2023.0.0 #488

  • Upgrade to Grace Profile: Web Plugin 2023.0.0 #489

  • Upgrade to Grace Scaffolding 6.0.0 #490

  • Upgrade to Grace Views 6.0.0 #491

  • Upgrade to Maven Settings Builder 3.9.4 #502

  • Upgrade to Spring Dependency Management Plugin 1.1.6 #445

  • Upgrade to Spring Framework 6.0.23 #492

2023.0.0-RC2

🐞 Bug Fixes

  • Fixes GrailsVersion throw NPE when execute grace -v #440

βš™οΈ Tasks

  • Release v2023.0.0-RC2

πŸš€ Dependency Upgrades

  • Upgrade to Grace Profile: Base 2023.0.0-RC2 #432

  • Upgrade to Grace Profile: Plugin 2023.0.0-RC2 #433

  • Upgrade to Grace Profile: Profile 2023.0.0-RC2 #434

  • Upgrade to Grace Profile: Rest API 2023.0.0-RC2 #435

  • Upgrade to Grace Profile: Starter 2023.0.0-RC2 #436

  • Upgrade to Grace Profile: Web Plugin 2023.0.0-RC2 #437

  • Upgrade to Grace Profile: Web 2023.0.0-RC2 #438

  • Upgrade to Tomcat 10.1.28 #439

2023.0.0-RC1

⭐️ New Features

  • Add a new Profile starter starter is a new Profile provides only one file, it gives you to write your own Application Templates, apply it when you create a new project including app, plugin, profile. #427

  • Force overwrite of existing files When creating an new app When creating a new app, force overwrite are allowed even if the directory already exists #426

  • Support for creating Grails apps that using Profiles Using a specific Grails version when you create a new app with create-app command, but not support SNAPSHOT versions. #425

  • Support using latest Grace Snapshot version to test Snapshot is the latest, un-released version of Grace. #424

  • Support specific Grace version using command flag grace-version #423

  • Add supports quiet flag in CreateAppCommand #421

  • Refine GroovyScriptCommand This allow script command to apply Application Templates to exist project, perform some complex tasks such as install, uninstall, upgrade. #413

  • Namespaced Command Add new attribute namespace to org.grails.cli.profile.Command, allow commands groupd by namespace. #410

  • Support Command can be hidden Commands can be hidden, in some cases, some infrequently used commands do not need to be shown to the user. #409

  • Application templates are simple Groovy files containing DSL, Ant scripts, etc. you can use templates to generate/customize Grace applications. #406

  • Support start scripts including lib\ext jars in classpath #382

⚑️ Breaking Changes

🐞 Bug Fixes

  • Throw StackOverflowError when GSP view not exists Don’t return cached UrlMappingInfo in the UrlMappingsHandlerMapping #378

πŸ›  Improvements

  • Make tomcat-jdbc as implementation dependency to grace-plugin-datasource #429

  • Don’t show app:template in non project directory ApplicationTemplateCommand should implements ProjectCommand instead of ProfileCommand #428

  • Don’t add log field for Domain Class #422

  • Refactor GrailsVersion

  • Fixes getGrailsGradlePluginVersion() error for using Grails version

  • Fixes value of option grace-version maybe null when using toString

  • Support specific Grails version using command flag grace-version Supports Grails 3, 4

  • Make Gradle compatible old versions used in Grails 3/4

  • Fixes issues when initializing dependencies of Profile and Features

  • Support specific Grails version using command flag grace-version Supports Grails 5, 6

  • Add methods to check Grails versions

  • Support specific Grace version using command flag grace-version

  • Add methods to check Grace versions

  • Update CreateAppCommand to allow only log errors

  • Add quiet flag to CommandLine

  • Provide Command Options for Application Templates When creating a new project, we need to know the command options to create files or apply templates. #420

  • Add command options to script property and template binding

  • Add more options: css database javascript enable-preview Use enable-preview to ignore flags or options valiate

  • Add getDeclaredOptions() for CommandLine

  • Set archiveClassifier of plugin jar to plugin #419

  • Enhance UrlMappingsHolderFactoryBean Remove unneed code, it will cause type cast exception #418

  • Use a temporary directory to generate template files #406

  • Refine ApplicationTemplateCommand Fixes a minor bug in CreateAppCommand #406

  • Add apply() method to GroovyScriptCommand This will supports script commands to apply Application Templates

  • Add deprecated property to GroovyScriptCommand

  • Add visible property to GroovyScriptCommand

  • Provides namespace for Script Command

  • Deprecate open command #412

  • Allow Command to be deprecated #411

  • Display a warning message when executing a deprecated command

  • Marked [deprecated] on commands in help command

  • Add deprecated property to MultiStepCommand

  • Add boolean isDeprecated() to Command

  • Support namespaced commands

  • Add getNamespace() and getFullName() to Command

  • Refactor HelpCommand Add flag all to show all commands, only show visible commands default

  • Add visible property to MultiStepCommand

  • Convert org.grails.cli.profile.Command to Java Add default method boolean isVisible()

  • Fixes fail tests related Groovy STC #404

  • Remove deprecated LazyBeanMap Use LazyMetaPropertyMap instead #408

  • Extract method evaluateFeatures

  • Support template hooks postGenerateProject

  • Extract method generateProjectSkeleton

  • Support template hooks preApplyTemplate and postApplyTemplate

  • Use Groovy task to execute Application Template scripts

  • Fixes error in hasFeature

  • Fixes template could be null

  • Improve generated project information

  • Use GrailsConsoleAntProject and Grace’s Ant tasks

  • Add more Ant tasks: * File * Git * Grace * Gradle * Groovy * Npm * Run * Say

  • Move GrailsConsoleLogger to its own class

  • Refactor CreateAppCommand * Fixes wrong project type * Make getDestinationDirectory protected

  • Refactor CreateAppCommand Cleanup

  • Refactor CreateAppCommand Don’t use global variables

  • remove unneed method resolveArtifactString

  • Define constant UNZIP_TEMPLATE_TEMP_DIR

  • Refactor CreateAppCommand

  • Refactor CreateAppCommand

  • Refactor CreateAppCommand

  • Binding variables and versions to GStringTemplate

  • Don’t call replacestring on binary files

  • Improve copySkeleton Check file exists before copying Copy .gitattributes

  • Refactor CreateAppCommand

  • Add more variables to Ant project properties

  • Support zip and git template and template directory

  • Support url resource for templates

  • Introduce Grace Application Templates

  • Improve create-app command: display project informations after project created #385

  • ImproveΒ create-app command error message when the app directory exists #384

  • Update Gradle default Start Script Templates #383

  • Add flags stacktrace and verbose to create-app command #381

  • Add mavenLocal() repository when using Grace snapshots version #380

  • Gradle: Use JavaPluginExtension instead of deprecated JavaPluginConvention

  • Improve DirectoryWatcher: Change logging level to debug when jna not available on MacOS

  • Update docs templates

  • Update github workflows Upgrade Gradle Actions

  • Add Jakarta Servlet and JSP taglib schema definitions

  • Update Metadata.DEFAULT_SERVLET_VERSION to 6.0

βš™οΈ Tasks

  • Release v2023.0.0-RC1

πŸš€ Dependency Upgrades

  • Upgrade to Grace Asset Pipeline Plugin 6.0.0-RC1 #386

  • Upgrade to Grace Async and Events 6.0.0-RC1 #387

  • Upgrade to Grace Cache Plugin 6.0.0-RC1 #388

  • Upgrade to Grace Data 2023.0.0-RC1 #389

  • Upgrade to Grace Data Hibernate 2023.0.0-RC1 #390

  • Upgrade to Grace Database Migration Plugin 6.0.0-RC1 #391

  • Upgrade to Grace Fields Plugin 6.0.0-RC1 #392

  • Upgrade to Grace Geb Plugin 6.0.0-RC1 #393

  • Upgrade to Grace Profile: Base 2023.0.0-RC1 #396

  • Upgrade to Grace Profile: Plugin 2023.0.0-RC1 #397

  • Upgrade to Grace Profile: Profile 2023.0.0-RC1 #398

  • Upgrade to Grace Profile: Rest API 2023.0.0-RC1 #399

  • Upgrade to Grace Profile: Starter 2023.0.0-RC1 #430

  • Upgrade to Grace Profile: Web Plugin 2023.0.0-RC1 #400

  • Upgrade to Grace Profile: Web 2023.0.0-RC1 #401

  • Upgrade to Grace Scaffolding 6.0.0-RC1 #394

  • Upgrade to Grace Views 6.0.0-RC1 #395

  • Upgrade to Groovy 4.0.22 #404

  • Upgrade to Maven Resolver 1.9.14 #403

  • Upgrade to Maven 3.9.4 #402

  • Upgrade to org.xhtmlrenderer:core-renderer R8 #407

  • Upgrade to SiteMesh 2.6.0 #350

  • Upgrade to Spring Framework 6.0.22 #351

  • Upgrade to Tomcat 10.1.25 #352

2023.0.0-M7

⚑️ Breaking Changes

  • Temporarily remove the run command

  • Migrate the new hibernate plugin

🐞 Bug Fixes

  • Fixes task compileGroovy execute failed on Windows

  • test: Use NullObject.getNullObject()

  • Gradle build: Using ByteBuddy instead of Cglib with Spock

  • Make tests passed Some tests ignored, should resolved later

  • The SourceDirectorySet.outputDir property has been deprecated, use the classesDirectory property instead

  • Fixes test because NullObject’s constructor is private now

  • Grails Web: Fixes StackOverflowError when view not found

  • Grails GSP: Fixes failed test in GrailsConventionGroovyPageLocatorSpec

  • Grails Bootstrap: Fixes failed test in GrailsPluginMetadataTests

  • Grails Plugin GSP: Fixes StackOverflowError, because DefaultGroovyPageLocatorβ€˜s precompiledGspMap was not properly initialized

  • Grails Plugin GSP: Fixes circle reference error in GroovyPagesAutoConfiguration

  • Grails Plugin GSP: Fixes NPE in GroovyPagesAutoConfiguration

  • Grails Boot: fixes NOT generate ApplicationLoader in BootInitializerClassInjector

πŸ›  Improvements

  • Start building against SiteMesh 2.6.0 snapshots #299

  • Start building against Grace Data Hibernate 2023.0.0 snapshots #296

  • Start building against Grace Data 2023.0.0 snapshots #295

  • Grails GSP: Make logger protected in DefaultGroovyPageLocator

  • Grails GSP: Improvements for DefaultGroovyPageLocator

  • Grails Shell: Make Commands and Features displaying by order

  • Grails Shell: Rearrange repositories and buildRepositories before using Grails profile

  • Grails Core: Make shouldInject(URL) default method in ClassInjector

  • Grails Plugin Interceptors: Adds missing grails.factories

  • Grails Plugin GSP: Adding version property to groovyPages plugin

  • Grails Core: GrailsASTUtils: adding more methods to check whether the specified source is a Grails project source

  • Grails Core: Deprecated ClassInjector.shouldInject(URL), in favor of shouldInject(ClassNode)

  • Grails Gradle Plugin: configure Groovy AST Metadata for configurationScript of GroovyCompileOptions

  • Improve Gradle build

  • Gradle Build: cleanup

  • Gradle Build: Configure Java toolchain

βš™οΈ Tasks

  • Release v2023.0.0-M7

  • Grace: update github workflows

  • ci: turn on unit tests

πŸš€ Dependency Upgrades

  • Upgrade to Grace Asset Pipeline Plugin 6.0.0-M4 #297

  • Upgrade to Grace Async and Events 6.0.0-M4 #327

  • Upgrade to Grace Cache Plugin 6.0.0-M3 #329

  • Upgrade to Grace Data 2023.0.0-M5 #295

  • Upgrade to Grace Data Hibernate 2023.0.0-M5 #296

  • Upgrade to Grace Database Migration Plugin 6.0.0-M3 #333

  • Upgrade to Grace Fields Plugin 6.0.0-M3 #330

  • Upgrade to Grace Geb Plugin 6.0.0-M3 #331

  • Upgrade to Grace Profile: Base 2023.0.0-M5 #334

  • Upgrade to Grace Profile: Plugin 2023.0.0-M4 #335

  • Upgrade to Grace Profile: Profile 2023.0.0-M4 #336

  • Upgrade to Grace Profile: Rest API 2023.0.0-M4 #337

  • Upgrade to Grace Profile: Web Plugin 2023.0.0-M4 #338

  • Upgrade to Grace Profile: Web 2023.0.0-M4 #339

  • Upgrade to Grace Scaffolding 6.0.0-M3 #332

  • Upgrade to Grace Views 6.0.0-M4 #328

  • Upgrade to Gradle Wrapper 7.6.4 #326

  • Upgrade to Gradle Tooling Api 7.6.4 #325

  • Upgrade to Groovy 4.0.21 #320

  • Upgrade to SiteMesh 2.6.0-M1 #299

  • Upgrade to SLF4J 2.0.9 #324

  • Upgrade to Spring Boot 3.0.13 #321

  • Upgrade to Spring Framework 6.0.14 #322

  • Upgrade to Tomcat 10.1.16 #323

2023.0.0-M6

⭐️ New Features

  • Grails Plugin GSP: Migrate to Jakarta Standard Tag Library 3.0

  • Grails Web JSP: adding web-app_5_0.xsd web-app_6_0.xsd web-jsptaglibrary_3_0.xsd

πŸ›  Improvements

  • Use default compileDir configured in asset-pipeline #292

  • Remove Micronaut related libraries in Gradle versions catalog #291

  • Rewrite Metadata #290

  • Add tests to check resolve strategy of BeanBuilder invokeBeanDefiningClosure() #269

  • Improvements for run-command #288

  • Supports run-script loading in /app/scripts and scripts #287

  • Grails Boot: Support configure watch files in application.yml in dev mode

  • Grails Boot: Support reloading spring beans from resources.xml when changed

  • Grails Plugin Core: Support reloading spring resources.groovy when changed

  • Grails Bootstrap: Update BuildSettings

  • Grails Bootstrap: Minor improvements for GrailsResourceUtils

  • Grails Bootstrap: Improve documentation and comments for GrailsResourceUtils

  • Grails i18n Plugin: Revert 0adeb492

  • Grails Boot: Refine GrailsDevelopmentModeWatchApplicationContextInitializer

  • Grails Boot: Simplify GrailsDevelopmentModeWatchApplicationContextInitializer

  • Grails Bootstrap: adding new BuildSettings.GRAILS_APP_PATH property, it may be app or grails-app as default.

  • Grails i18n Plugin: Support watching i18n properties, use Ant to convert files to ASCII

  • Grails Boot: Refine GrailsDevelopmentModeWatchApplicationContextInitializer, use BuildSettings.GRAILS_APP_DIR

  • Grails Console: set IO verbosity to VERBOSE

  • Grails Gradle Plugin: Always configure system properties of BuildSettings when executing command like bootRun, runCommand, runScript

  • Grails Shell: using BuildSettings.GRAILS_APP_DIR to load the project Classes in Completer

  • Grails Shell: using BuildSettings.GRAILS_APP_DIR to load config files

  • Grails i18n Plugin: using BuildSettings.GRAILS_APP_DIR to get i18n properties

  • Grails Bootstrap: adding new BuildSettings.APP_DIR system property, also configure it by Gradle plugin

  • Grails Console: use GrailsConsoleLogger when running application commands or scripts

  • Grails Console: Running scripts from GRAILS_APP_DIR/scripts directory

  • Grails Bootstrap: Adding GRAILS_APP_DIR to BuildSettings

  • Grails Console: Rename GrailsApplicationContextCommandRunner to GrailsApplicationCommandRunner

  • Grails Console: set IO verbosity to VERBOSE

🐞 Bug Fixes

  • Remove WARN: Using deprecated '-debug' fallback for parameter name resolution #294

  • Migrate to grace-docs dependency in GrailsDocGradlePlugin #293

  • Remove duplicated line

  • Remove unused grails-plugin-gsp

  • Fixes event.source.file.canonicalFile error #289

  • Remove unused Gradle plugin descriptors

  • Explicitly set resolve strategy to OWNER_FIRST in BeanBuilder.invokeBeanDefiningClosure #269

  • GrailsDevelopmentModeWatchApplicationContextInitializer compilerConfig.targetDirectory is not correct #261

  • Ignore SystemEnvironmentConfigSpec

  • Grails Core: fix tests in StackTracePrinterSpec

  • Grails Plugin REST: fix tests

  • Fixes tests related aop scoped-proxy, set proxy-target-class: false

  • Revert "Grails Boot: Support configure watch files in application.yml in dev mode"

  • Grails Gradle Plugin: Don’t use deprecated Gradle ConfigureUtil

  • Grails Bootstrap: Fixes GrailsResourceUtils.getPathFromBaseDir(), the path relative to the project base directory

  • Grails Bootstrap: Update GrailsVersion in GrailsUtilTests

  • Grails Gradle Plugin: Import grails-bom after spring-boot-dependencies

  • Grails Console: remove unnecessary configureApplicationContextClass() in DevelopmentGrails

  • Grails Gradle Plugin: set systemProperty base.dir when running command or script

  • Grails Console: Fixes BUG: The run-script command does not work if grails.codegen.defaultPackage is set

  • Grails Console: Don’t hook interceptors when execute commands

  • Grails Console: remove unnecessary configureApplicationContextClass() in GrailsConsole and GrailsShell

βš™οΈ Tasks

  • Release v2023.0.0-M6

  • Update github workflows

  • Add Badges

  • Update README

  • Update readme

  • Update GitHub ISSUE_TEMPLATE.md

  • Update github workflows

  • Update github issue templates

  • Update github issue templates

  • Grace: update github workflows

  • Grace: migrate to grace

πŸš€ Dependency Upgrades

  • Upgrade to Grace Asset Pipeline Plugin 6.0.0-M3 #271

  • Upgrade to Grace Async and Events 6.0.0-M3 #272

  • Upgrade to Grace Cache Plugin 6.0.0-M2 #273

  • Upgrade to Grace Data 2023.0.0-M4 #274

  • Upgrade to Grace Data Hibernate 2023.0.0-M4 #275

  • Upgrade to Grace Database Migration Plugin 6.0.0-M2 #276

  • Upgrade to Grace Fields Plugin 6.0.0-M2 #277

  • Upgrade to Grace Geb Plugin 6.0.0-M2 #278

  • Upgrade to Grace Profile: Base 2023.0.0-M4 #281

  • Upgrade to Grace Profile: Plugin 2023.0.0-M3 #282

  • Upgrade to Grace Profile: Profile 2023.0.0-M3 #283

  • Upgrade to Grace Profile: Rest API 2023.0.0-M3 #284

  • Upgrade to Grace Profile: Web Plugin 2023.0.0-M3 #285

  • Upgrade to Grace Profile: Web 2023.0.0-M3 #286

  • Upgrade to Grace Scaffolding 6.0.0-M2 #279

  • Upgrade to Grace Views 6.0.0-M3 #280

  • Upgrade to Groovy 4.0.12

  • Upgrade to Jackson Databind 2.14.3

  • Upgrade to Micronaut 3.9.2

  • Upgrade to Spring Boot 3.0.7

  • Upgrade to Spring Framework 6.0.9

2023.0.0-M5

🐞 Bug Fixes

  • Set default compatibility of ProfileCompilerTask to 17

  • Cleanup build scripts: make spring-test test only

  • Fixed NPE in GroovyPagesAutoConfiguration

  • Adds missing spring resources

  • Revert GroovyPageLayoutFinder

  • Groovy 3: Migrate to groovy.test.NotYetImplemented

  • Code format: make imports ordered

  • Update AbstractGrailsTagTests

  • Grails Console: Remove dependency of jna

  • Grails Gradle Plugin: Fixes run-command fails

  • Fixes findMainClass errors in Groovy 4

πŸ›  Improvements

  • Gradle Plugin: Database Migration plugin no longer uses app\migrations by default #227

  • Gradle Plugin: app\views should not be treated as Resource dir #226

  • Remove deprecated Gradle plugins: gracePluginPublish and graceProfilePublish #217

  • Gradle Plugin: console and shell should be listed by group in Gradle tasks #216

  • Make application running status logging only when debug enabled

  • Grace: change console title

  • Update project skeleton: migrating from old apply plugin to plugins block #219

  • Use properties of grace-bom as variables for CreateAppCommand #218

  • Remove the direct dependency of GSP on url-mappings plugin #228

  • Format codes in GroovyPagesGrailsPlugin

  • Auto-Configure GroovyPagesGrailsPlugin

  • Auto-Configure GroovyPagesGrailsPlugin

  • Auto-Configure GroovyPagesGrailsPlugin

  • Auto-Configure GroovyPagesGrailsPlugin

  • Grails Boot: use configureProfiles in Grails

  • Grails Console: custom title for GrailsConsole fileNewWindow

  • Grails Console: Rename GrailsSwingConsole to GrailsConsole

  • Grails Console: Adding JVM and OS version for showAbout dialog

  • Grails Console: Migrate to Groovy 4, because Groovy 4 enable indy default

  • Grails Boot: Refactoring Grails

  • Grails Boot: Improve print information of the running app status

  • Grails Console: Improve GrailsSwingConsole

  • Grails Console: Improve the Grails shell with two call hooks: beforeExecution and afterExecution

βš™οΈ Tasks

  • Grace: update github workflows

  • Grace: update github workflows

  • Grace: migrate to grace

πŸš€ Dependency Upgrades

  • Upgrade to Ant 1.10.13

  • Upgrade to Grace Profile: Base 2023.0.0-M3 #220

  • Upgrade to Grace Profile: Plugin 2023.0.0-M2 #221

  • Upgrade to Grace Profile: Profile 2023.0.0-M2 #222

  • Upgrade to Grace Profile: Rest API 2023.0.0-M2 #223

  • Upgrade to Grace Profile: Web 2023.0.0-M2 #225

  • Upgrade to Grace Profile: Web Plugin 2023.0.0-M2 #224

  • Upgrade to Jackson Databind 2.14.2

  • Upgrade to Methvin Directory Watcher 0.18.0

2023.0.0-M4

🐞 Bug Fixes

  • Fixes bug: ApplicationCommand in app/commands should be listed in Gradle tasks #179

  • Fixes findMainClass errors in Groovy 4

  • Downgrade Jansi to 1.18 #178

βš™οΈ Tasks

  • Grace: update github workflows

πŸš€ Dependency Upgrades

  • Upgrade to Ant 1.10.13

  • Upgrade to AsciidoctorJ 2.5.8

  • Upgrade to JSoup 1.16.1

  • Upgrade to Objenesis 3.3

  • Upgrade to SLF4J 2.0.7

2023.0.0-M3

⭐️ New Features

  • ApplicationCommand can be registered as a Gradle task #175

  • Migrate to Jakarta: using Jakarta XML Binding 4.0.0

  • Migrate to Jakarta: remove javax libs in Gradle version catalog

  • Migrate to Jakarta: Using jakarta.persistence-api

  • Migrate auto-configurations to @AutoConfiguration

  • Grails Shell: Adding variable projectSnakeCaseName to CreateAppCommand

  • Grails Service and Spring Service coexist harmoniously

  • Grails Controller and Spring Controller coexist harmoniously

  • Changed viewName to better support integration with other view templates, like Groovy Templates

  • Improve log statements to help with debugging

  • Adding toString method, this is helpful for logs

⚑️ Breaking Changes

  • Remove supports for micronaut spring

  • Break Changes: Scaffold templates moved to resources root

  • Break changes: JPA Entity is no longer considered Grails Domain

🐞 Bug Fixes

  • Update Grails version pattern

  • Grails Plugin REST: fixes AbstractJsonViewContainerRenderer compiling errors in grails-views project

  • Use jakarta servlet

  • Grails GSP: fixes layout view not found

  • Fixes violations for Checkstyle check

  • Fixes violations for Codenarc check

  • Fixes violations for Codenarc check

  • Grails Plugin GSP: remove loadAfter 'filters'

πŸ›  Improvements

  • Gradle Plugin: remove unused constants

  • Gradle Plugin: remove configureGroovy

  • Gradle Plugin: remove micronaut dependency and configureFileWatch

  • Update runtime dependencies of shell

  • Refine GrailsResourceBanner Support Spring Boot 3

  • Grails REST render context support viewName including namespace and controller name

  • Grails REST render context support viewName including namespace and controller name

  • Improve ApplicationClassInjector: make Grails to take advantage of DataSource and JPA configurations in Spring Boot

  • Improvements made to JPA Entity compatibility

  • Update Dependencies

  • Refine GroovyPageViewResolver

  • Make GroovyGrailsPlugin ordered

  • Grails Shell: format Gradle build.gradle

  • Grails Shell: remove extra spaces

βš™οΈ Tasks

  • Gradle build: remove dependencySubstitution force using Groovy 4

  • Gradle Build: remove dependencySubstitution for using Groovy 4

  • Grace: add dependencySubstitution to use Groovy 4

  • Grace: update github workflows

  • Grace: optimize shell dependencies

  • Grace: update gradle build scripts

  • Don’t publish milestones to sdkman

πŸš€ Dependency Upgrades

  • Upgrade to Caffeine 3.1.6

  • Upgrade to Grace Async and Events 6.0.0-M2 #170

  • Upgrade to Grace Cache Plugin 6.0.0-M1 #151

  • Upgrade to Grace Data 2023.0.0-M2 #166

  • Upgrade to Grace Data 2023.0.0-M3 #168

  • Upgrade to Grace Data Hibernate 2023.0.0-M2 #167

  • Upgrade to Grace Data Hibernate 2023.0.0-M3 #169

  • Upgrade to Grace Database Migration Plugin 6.0.0-M1 #154

  • Upgrade to Grace Fields Plugin 6.0.0-M1 #155

  • Upgrade to Grace Geb Plugin 6.0.0-M1 #156

  • Upgrade to Grace Profile: Base 2023.0.0-M2 #173

  • Upgrade to Grace Profile: Plugin 2023.0.0-M1 #158

  • Upgrade to Grace Profile: Profile 2023.0.0-M1 #159

  • Upgrade to Grace Profile: Rest API 2023.0.0-M1 #160

  • Upgrade to Grace Profile: Web Plugin 2023.0.0-M1 #161

  • Upgrade to Grace Profile: Web 2023.0.0-M1 #162

  • Upgrade to Grace Scaffolding 6.0.0-M1 #163

  • Upgrade to Grace Views 6.0.0-M2 #172

  • Upgrade to Groovy 4.0.11

  • Upgrade to groovy-toml 4.0.11

  • Upgrade to Micronaut Core 4.0.7 #171

  • Upgrade to SLF4J 2.0.7 #174

  • Upgrade to Spring Boot 3.0.6

  • Upgrade to Spring Framework 6.0.8

  • Upgrade to Tomcat 10.1.8

2023.0.0-M2

🐞 Bug Fixes

  • Use jakarta servlet

  • Update Dependencies

  • Don’t publish milestones to sdkman

  • Fixes pluginExcludes type error

  • Grails Shell: fixes failing in 'create-app' Command

  • Gradle: migrate to Gradle 8 Gradle 8: 'classifier' was removed from type org.gradle.api.tasks.bundling.Jar

  • Grails Gradle Plugin: fixes some errors like AbstractMethodError in GrailsExtension and Environment

  • Gradle: Support Gradle 8.0 fixed: Could not create task of type 'GroovyPageForkCompileTask' in Gradle 8

  • Migrate to jakarta.* namespace

  • Grails Core: make GrailsASTUtils isDomainClass decoupled with 'javax.persistence-api' and GORM

  • Gradle Plugin: remove SDK Plugin

πŸ›  Improvements

  • Grace: update install.txt

  • Grace: update runtime dependencies for shell

  • Grace: optimize shell dependencies

  • Grace: rename install and license

  • Grace: update readmes and license

βš™οΈ Tasks

  • Grace: update gradle build scripts

  • Grace: update github workflows skip tests

  • Grace: update github workflows

  • Grace: update github workflows

  • Grace: fix Conflicting module versions

  • Grace: rename grails-sitemesh to grace-sitemesh

  • Grace: update run command

  • Grace: optimize shell dependencies

  • Grace: fixed some known issues

  • Grace: update profile and commands

  • Grace: update banner

  • Grace: fixed failed tests

  • Grace: update media assets

  • Grace: update testsuite build scripts

  • Grace: update github workflows

  • Grace: update gradle build scripts

  • Grace: rename all sub-projects

πŸš€ Dependency Upgrades

  • Gradle Plugin: Upgrade to JaCoCo 0.8.9

  • Gradle Plugin: Test Retry Plugin 1.5.2

  • Gradle Plugin: Upgrade to Nexus Publish Plugin 1.3.0

  • Gradle Plugin: Upgrade to Nebula Extra Configuration Plugin 9.0.0

  • Upgrade to Grace Asset Pipeline Plugin 6.0.0-M1 #149

  • Upgrade to Grace Asset Pipeline Plugin 6.0.0-M2 #165

  • Upgrade to Grace Async and Events 6.0.0-M1 #150

  • Upgrade to Grace Data Hibernate 2023.0.0-M1 #153

  • Upgrade to Grace Data 2023.0.0-M1 #152

  • Upgrade to Grace Profile: Base 2023.0.0-M1 #157

  • Upgrade to Grace View 6.0.0-M1 #164

2023.0.0-M1

Grace 2023.0 will be the first release to support Spring Boot 3.0 and Spring Framework 6.0. This release will be migrated to Jakarta namespace, upgraded to Jakarta Servlet 6 and Jakarta JSP 3.1, Jakarta Transaction API 2.0. To accomplish this, we merged both the SiteMesh 2.4.2 and GSP projects into this repository, and did a lot of migration and upgrade work. The next step will be to gradually upgrade other major projects, such as Grace GORM, as well as other core plugins.

⭐️ New Features

  • Jakarta: Migrate to 'jakarta.*' namespaces

  • Jakarta: Migrate to 'jakarta.persistence' namespaces

  • Jakarta: Migrate to 'jakarta.*' namespaces

  • Jakarta: Using jakarta.persistence-api

  • Support Jakarta EE 9

  • Support Jakarta EE 9

  • SiteMesh: Support Jakarta EE 9

  • Grails GSP Import GSP related projects into Grails Framework

  • Adding Grails Dynamic Modules Plugin

  • Import Spring Boot CLI

⚑️ Breaking Changes

  • Micronaut: Remove supports for Micronaut Spring

🐞 Bug Fixes

  • Grace: fixed some known issues

  • Fixes deprecated warnings from SafeConstructor and Representer

  • CodeNarc: Fixes violations for CodeNarc check

  • Fixes errors for Checkstyle check: [RequireThis]

  • Grails Shell: fixes wrong location of 'grails-bom-effective.xml'

  • Grails Shell: fixed error import of GrailsDependenciesDependencyManagement

  • Grails GSP: fixes tests NPE with JSP 2.2 and JSTL 1.2

  • Grails GSP: fixes JSP tags not found

  • Grails GSP: added missing grails-plugin.xml

  • Grails GSP: fixed STC errors

  • Fixes some errors related to classLoader

  • Fixes type cast error in GradleCommand

πŸ›  Improvements

  • Groovy: explicitly import 'groovy.xml.XmlSlurper' *: revert 'Adding not related modules'

  • SiteMesh: make tests pass

  • SiteMesh: adding module: 'grails-sitemesh'

  • SiteMesh: relocate to 'grails-sitemesh'

  • SiteMesh: Remove some files unused and not related

  • SiteMesh: relocate tlds to src/main/resources

  • Using Gradle to build

  • Update Grails version to 2023.0.0

  • Reorganizing the project codebase

  • fix: remove unused 'grails-gsp' in libs.version

  • Grails GSP: remove support for loading NamespacedTagDispatcher from Spring Beans

  • Grails GSP: minor improvements

  • Improvements for customizing Tag Namespace

  • Grails Gradle Plugin: remove dependency of 'spring-boot-cli'

  • Grails Gradle Plugin: adding dependency 'spring-boot-cli'

  • Grails Shell: remove depracted 'AetherGrapeEngine' and 'AetherGrapeEngineFactory'

  • Grails Shell: rename 'GrailsAetherGrapeEngineFactory' to 'GrailsMavenGrapeEngineFactory'

  • Grails Shell: use 'MavenResolverGrapeEngine' inplace of depracted 'AetherGrapeEngine'

  • Grails Shell: remove dependency of 'spring-boot-cli'

  • Grails Shell: remove SpringInvoker

  • Grails Shell: refactoring code

  • Grails Shell: refactoring GrailsApplicationCompilerAutoConfiguration and GrailsTestCompilerAutoConfiguration

  • Grails Shell: Apply IDEA Groovy and Java Code Style

  • Grails Shell: remove unused GrailsDependencyVersions

  • Grails Shell: relocate GrailsDependenciesDependencyManagement

  • Minor improvement: Correct words

  • Grails Web: Improvements for HttpServletReuest.isXhr

  • Grails Shell: Update RunCommand

  • Grails Shell: Update dependencies for GrailsCompilerAutoConfiguration

  • Grails Shell: Use GrailsDependenciesDependencyManagement replace of GrailsDependencyVersions

  • Grails GSP: adding web-app_3_0.x and web-app_4_0.xsd

  • Grails GSP: remove '@Depreacted' in JspInvokeGrailsTagLibTag

  • build: fixes Java Compile warnings of deprecated, unchecked, rawtypes

  • Grails GSP: isolated tests

  • Grails GSP: relocate test resources

  • Grails GSP: replace deprecated GrailsTagLibClass, DefaultGrailsTagLibClass, TagLibArtefactHandler

  • Grails GSP: cleanup build.gradle

  • Grails GSP: relocate ControllerTagLibraryTraitInjector to src/main/groovy

  • Grails GSP: define versions in Gradle version catalog

  • Grails GSP: update dependencies

  • Grails GSP: Update build.gradle

  • Prepare to merge

  • Grails Plugin Dynamic Modules: Change url to Object type

  • Update default Servlet version to 4.0

  • Refine UrlMappingsPluginConfiguration

  • Grails Plugin API: change closure ResolveStrategy to DELEGATE_FIRST

  • Grails Plugin API: relocate AbstractModuleDescriptor to 'grails.plugins.descriptors'

βš™οΈ Tasks

  • Release v2023.0.0-M1

  • Grace: update github workflows

  • Grace: update github workflows

  • Grace: fixed failed tests

  • Grace: optimize shell dependencies

  • Grace: remove excluding slf4j-simple in all dependencies

  • Grace: update custom banner file

  • Grace: update profile repository

  • Grace: update commands

  • Grace: update banner

  • Grace: update media assets

  • Grace: update gradle build scripts

  • Grace: rename all sub-projects

  • Update to Jakarta dependencies in all the subprojects

  • Added Jakarta EE dependencies to Gradle version catalog

  • Update build to JDK 17

  • Upgrade io.github.gradle-nexus:publish-plugin to 1.3.0

  • Upgrade com.netflix.nebula:gradle-extra-configurations-plugin to 8.0.0

  • build: Upgrade to Checkstyle 10.9.3

  • build: Upgrade to CodeNarc 3.2.0

  • Next development version: 2023.0.0-SNAPSHOT

πŸš€ Dependency Upgrades

  • Upgrade to Apache Groovy 3.0.16

  • Upgrade to AspectJ 1.9.19

  • Upgrade to Caffeine 3.1.5

  • Upgrade to groovy-toml 4.0.10

  • Upgrade to HSQLDB 2.7.1

  • Upgrade to JUnit Jupiter 5.9.2 and JUnit Platform 1.9.2

  • Upgrade to Spring Boot 3.0.5

  • Upgrade to Spring Boot 3.0.0