diff --git a/.asf.yaml b/.asf.yaml index b7969d50c..41f2c9edf 100644 --- a/.asf.yaml +++ b/.asf.yaml @@ -1,12 +1,5 @@ github: environments: - source: - required_reviewers: - - id: grails-committers - type: Team - - id: jdaugherty - type: User - wait_timer: 0 release: required_reviewers: - id: grails-committers diff --git a/.github/renovate.json b/.github/renovate.json index cc05a1379..408621bc0 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -44,7 +44,6 @@ "org.grails:grails-plugin-databinding", "org.grails:grails-plugin-datasource", "org.grails:grails-plugin-domain-class", - "org.grails:grails-plugin-i18n", "org.grails:grails-plugin-interceptors", "org.grails:grails-plugin-mimetypes", "org.grails:grails-plugin-rest", diff --git a/.github/vote_templates/announce.txt b/.github/vote_templates/announce.txt new file mode 100644 index 000000000..cae76638d --- /dev/null +++ b/.github/vote_templates/announce.txt @@ -0,0 +1,23 @@ +The Apache Grails (incubating) community is pleased to announce the release of Apache Grails (incubating) Spring Security Plugin ${VERSION}. + +Grails is a powerful Groovy-based web application framework for the JVM built on top of Spring Boot that has many plugins to further extend its functionality. + +This Spring Security Plugin release another milestone on our journey to a final 7.0 release. Users are encouraged to try the milestone to provide early feedback. Detailed upgrade instructions are available here: https://docs.grails.org/${VERSION}/guide/upgrading.html. + +The release notes are available here: +https://github.com/apache/grails-spring-security/compare/v${VERSION} + +For the complete list of changes: +https://github.com/apache/grails-spring-security/compare/v${PREVIOUS_VERSION}...v${VERSION} + +Apache Grails website: https://grails.apache.org/ + +Download Links: https://grails.apache.org/download.html + +Grails Resources: +- Grails Spring Security GitHub repo: https://github.com/apache/grails-spring-security +- Issues: https://github.com/apache/grails-spring-security/issues +- Mailing lists: https://grails.apache.org/community.html + +Happy Coding, +The Apache Grails (incubating) Team diff --git a/.github/vote_templates/groovy_pmc.txt b/.github/vote_templates/groovy_pmc.txt new file mode 100644 index 000000000..db5b24d4d --- /dev/null +++ b/.github/vote_templates/groovy_pmc.txt @@ -0,0 +1,30 @@ +Hi Everyone, + +The Apache Grails community has voted to approve the release of Apache Grails Spring Security Plugin ${VERSION}. + +As the incubation host, we now kindly request the Groovy PMC to review & approve our ASF release. + +Grails vote thread: +* + +Vote result thread: +* https:// + +The tag for this release is: +* (grails-spring-security) https://github.com/apache/grails-spring-security/releases/tag/v${VERSION} + +The artifacts to be voted on are located as follows (r${DIST_SVN_REVISION}): +Source release: https://dist.apache.org/repos/dist/dev/incubator/grails/spring-security/${VERSION}/sources + +Release artifacts are signed with a key from the following file: +https://dist.apache.org/repos/dist/release/incubator/grails/KEYS + +Please vote on releasing this package as Apache Grails (incubating) Spring Security Plugin ${VERSION}. + +Hints on validating checksums/signatures (but replace md5sum with sha512sum): +https://www.apache.org/info/verification.html + +The vote for this release is open for a minimum of 72 hours. +[ ] +1 Release Apache Grails (incubating) Spring Security Plugin ${VERSION} +[ ] 0 I don't have a strong opinion about this, but I assume it's ok +[ ] -1 Do not release Apache Grails (incubating) Spring Security Plugin ${VERSION} because... diff --git a/.github/vote_templates/staged.txt b/.github/vote_templates/staged.txt new file mode 100644 index 000000000..f170ced0c --- /dev/null +++ b/.github/vote_templates/staged.txt @@ -0,0 +1,35 @@ +Hi Everyone, + +I am happy to start the VOTE thread for an Apache Grails (incubating) Spring Security Plugin release of version ${VERSION}! + +Release notes for the release are here: +https://github.com/apache/grails-spring-security/releases/tag/v${VERSION} + +The tag for this release is: +https://github.com/apache/grails-spring-security/releases/tag/v${VERSION} +Tag commit id: ${VERSION_COMMIT_ID} + +The artifacts to be voted on are located as follows (r${DIST_SVN_REVISION}): +Source release: https://dist.apache.org/repos/dist/dev/incubator/grails/spring-security/${VERSION}/sources + +Release artifacts are signed with a key from the following file: +https://dist.apache.org/repos/dist/release/incubator/grails/KEYS + +Please vote on releasing this package as: Apache Grails (incubating) Spring Security Plugin ${VERSION}. + +Reminder on ASF release approval requirements for PPMC members: +https://www.apache.org/legal/release-policy.html#release-approval + +Hints on validating checksums/signatures (but replace md5sum with sha512sum): +https://www.apache.org/info/verification.html + +The vote is open for a minimum of 72 hours and passes if a majority of at least +three +1 PPMC votes are cast. + +[ ] +1 Release Apache Grails (incubating) Spring Security Plugin ${VERSION} +[ ] 0 I don't have a strong opinion about this, but I assume it's ok +[ ] -1 Do not release Apache Grails (incubating) Spring Security Plugin ${VERSION} because... + +Here is my vote: + ++1 (binding) diff --git a/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml index e1b2a73d0..7a087bc04 100644 --- a/.github/workflows/release-notes.yml +++ b/.github/workflows/release-notes.yml @@ -21,46 +21,24 @@ on: branches: - '[4-9]+.[0-9]+.x' pull_request: - types: [opened, reopened, synchronize] - pull_request_target: - types: [opened, reopened, synchronize] - workflow_dispatch: + types: [ opened, reopened, synchronize, labeled ] + pull_request_target: + types: [ opened, reopened, synchronize, labeled ] + workflow_dispatch: +# queue jobs and only allow 1 run per branch due to the likelihood of hitting GitHub resource limits +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: false jobs: - release_notes: + update_release_draft: + permissions: + # write permission is required to create a github release + contents: write + # write permission is required for autolabeler + pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - name: Check if it has release drafter config file - id: check_release_drafter - run: | - has_release_drafter=$([ -f .github/release-drafter.yml ] && echo "true" || echo "false") - echo "has_release_drafter=${has_release_drafter}" >> $GITHUB_OUTPUT - - name: Extract branch name - id: extract_branch - run: echo "value=${GITHUB_REF:11}" >> $GITHUB_OUTPUT - # If it has release drafter: - - uses: release-drafter/release-drafter@v6 - if: steps.check_release_drafter.outputs.has_release_drafter == 'true' + - name: "📝 Update Release Draft" + uses: release-drafter/release-drafter@v6 env: - GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} - with: - commitish: ${{ steps.extract_branch.outputs.value }} - # Otherwise: - - name: Export Gradle Properties - if: steps.check_release_drafter.outputs.has_release_drafter == 'false' - uses: apache/grails-github-actions/export-gradle-properties@asf - - uses: apache/grails-github-actions/release-notes@asf - if: steps.check_release_drafter.outputs.has_release_drafter == 'false' - id: release_notes - with: - token: ${{ secrets.GH_TOKEN }} - - uses: ncipollo/release-action@1e3e9c6637e5566e185b7ab66f187539c5a76da7 - if: steps.check_release_drafter.outputs.has_release_drafter == 'false' && steps.release_notes.outputs.generated_changelog == 'true' - with: - allowUpdates: true - commit: ${{ steps.release_notes.outputs.current_branch }} - draft: true - name: ${{ env.title }} ${{ steps.release_notes.outputs.next_version }} - tag: v${{ steps.release_notes.outputs.next_version }} - bodyFile: CHANGELOG.md - token: ${{ secrets.GH_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4f3c8e601..9b1fe858f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -112,7 +112,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} source: # to ensure we never publish any build artifacts, run the source distribution as a separate build workflow - environment: source name: "Source Distribution" needs: publish permissions: @@ -204,10 +203,142 @@ jobs: set -e cd ${{ needs.publish.outputs.extract_repository_name }} gh release --repo ${{ github.repository }} delete-asset v${{ needs.publish.outputs.release_version }} PUBLISHED_ARTIFACTS.txt --yes + upload: + needs: [ publish, source ] + runs-on: ubuntu-24.04 + permissions: + contents: write + env: + SVN_USERNAME: ${{ secrets.SVC_DIST_GRAILS_USERNAME }} + SVN_PASSWORD: ${{ secrets.SVC_DIST_GRAILS_PASSWORD }} + steps: + - name: "Output Agent IP" # in the event RAO blocks this agent, this can be used to debug it + run: curl -s https://api.ipify.org + - name: "Setup SVN and Tools" + run: sudo apt-get install -y subversion subversion-tools tree gettext-base + - name: "Ensure grails dev folder exists" + run: | + set -e + + if svn ls https://dist.apache.org/repos/dist/dev/incubator/grails --username "$SVN_USERNAME" --password "$SVN_PASSWORD" --non-interactive; then + echo "Dev Folder 'grails' already exists — skipping creation" + else + echo "Dev Folder 'grails' does not exist, creating" + svnmucc --username "$SVN_USERNAME" --password "$SVN_PASSWORD" --non-interactive \ + mkdir https://dist.apache.org/repos/dist/dev/incubator/grails \ + -m "Create 'grails' dev folder" + fi + - name: "Ensure grails spring-security folder exists" + run: | + set -e + + if svn ls https://dist.apache.org/repos/dist/dev/incubator/grails/spring-security --username "$SVN_USERNAME" --password "$SVN_PASSWORD" --non-interactive; then + echo "Dev Folder 'grails/spring-security' already exists — skipping creation" + else + echo "Dev Folder 'grails/spring-security' does not exist, creating" + svnmucc --username "$SVN_USERNAME" --password "$SVN_PASSWORD" --non-interactive \ + mkdir https://dist.apache.org/repos/dist/dev/incubator/grails/spring-security \ + -m "Create 'grails spring-security' dev folder" + fi + - name: "Checkout dev repo" + run: | + svn checkout --username "$SVN_USERNAME" --password "$SVN_PASSWORD" --non-interactive https://dist.apache.org/repos/dist/dev/incubator/grails/spring-security dev-repo + - name: "Remove existing dev version" + run: | + export VERSION="${{ needs.publish.outputs.release_version }}" + cd dev-repo + if [ -d "$VERSION" ]; then + svn delete "$VERSION" + svn commit -m "Remove grails spring-security dev version $VERSION" --username "$SVN_USERNAME" --password "$SVN_PASSWORD" --non-interactive + else + echo "No existing dev version $VERSION to remove" + fi + - name: "Fetch source distributions" + run: | + export TAG="v${{ needs.publish.outputs.release_version }}" + export VERSION="${{ needs.publish.outputs.release_version }}" + cd dev-repo + mkdir -p $VERSION/sources + cd $VERSION/sources + curl -LO https://github.com/apache/grails-core/releases/download/$TAG/apache-${{ needs.publish.outputs.extract_repository_name }}-$VERSION-incubating-src.zip + curl -LO https://github.com/apache/grails-core/releases/download/$TAG/apache-${{ needs.publish.outputs.extract_repository_name }}-$VERSION-incubating-src.zip.sha512 + curl -LO https://github.com/apache/grails-core/releases/download/$TAG/apache-${{ needs.publish.outputs.extract_repository_name }}-$VERSION-incubating-src.zip.asc + echo "Downloaded the following files:" + ls -l + - name: "Upload distributions" + run: | + export TAG="v${{ needs.publish.outputs.release_version }}" + export VERSION="${{ needs.publish.outputs.release_version }}" + cd dev-repo + echo "Adding the following files to SVN:" + tree + svn add $VERSION --force + svn commit -m "Upload grails distribution files for $VERSION" --username "$SVN_USERNAME" --password "$SVN_PASSWORD" --non-interactive + pwd + - name: "Store Distribution SVN revision" + run: | + export VERSION="${{ needs.publish.outputs.release_version }}" + cd dev-repo + svn info $VERSION > "DIST_SVN_REVISION.txt" + - name: "Upload Distribution SVN revision" + uses: softprops/action-gh-release@v2 + with: + files: dev-repo/DIST_SVN_REVISION.txt + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: "📥 Checkout repository" + uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + ref: v${{ needs.publish.outputs.release_version }} + path: "${{ needs.publish.outputs.extract_repository_name }}" + - name: 'Initial Vote Email' + env: + VERSION: ${{ needs.publish.outputs.release_version }} + VERSION_COMMIT_ID: ${{ needs.publish.outputs.commit_hash }} + run: | + export DIST_SVN_REVISION=$(awk '/Last Changed Rev:/ {print $4}' dev-repo/DIST_SVN_REVISION.txt) + + echo "*************************************************" + echo "Subject: [VOTE] Release Apache Grails (incubating) Spring Security Plugin ${VERSION}" + echo "*************************************************" + echo "Body:" + echo "*************************************************" + cat ${{ needs.publish.outputs.extract_repository_name }}/.github/vote_templates/staged.txt | envsubst + echo "*************************************************" + - name: 'Groovy Vote Email' + env: + VERSION: ${{ needs.publish.outputs.release_version }} + VERSION_COMMIT_ID: ${{ needs.publish.outputs.commit_hash }} + run: | + export DIST_SVN_REVISION=$(awk '/Last Changed Rev:/ {print $4}' dev-repo/DIST_SVN_REVISION.txt) + + echo "*************************************************" + echo "Subject: [VOTE] Approval of Apache Grails (incubating) Spring Security Plugin ${VERSION} release by Groovy PMC" + echo "*************************************************" + echo "Body:" + echo "*************************************************" + cat ${{ needs.publish.outputs.extract_repository_name }}/.github/vote_templates/groovy_pmc.txt | envsubst + echo "*************************************************" + - name: 'Announcement Email' + env: + VERSION: ${{ needs.publish.outputs.release_version }} + VERSION_COMMIT_ID: ${{ needs.publish.outputs.commit_hash }} + PREVIOUS_VERSION: 'TODO_PREVIOUS_VERSION' + run: | + export DIST_SVN_REVISION=$(awk '/Last Changed Rev:/ {print $4}' dev-repo/DIST_SVN_REVISION.txt) + + echo "*************************************************" + echo "Subject: [ANNOUNCE] Apache Grails (incubating) Spring Security Plugin ${VERSION}" + echo "*************************************************" + echo "Body:" + echo "*************************************************" + cat ${{ needs.publish.outputs.extract_repository_name }}/.github/vote_templates/announce.txt | envsubst + echo "*************************************************" docs: environment: docs name: "Publish Documentation" - needs: [publish, source] + needs: [publish, source, upload] runs-on: ubuntu-latest permissions: contents: write # required for gradle.properties revert @@ -243,7 +374,7 @@ jobs: release: name: "Close Release" environment: release - needs: [ publish, source, docs ] + needs: [ publish, source, upload, docs ] runs-on: ubuntu-latest permissions: contents: write # required for gradle.properties revert diff --git a/gradle.properties b/gradle.properties index 5c690eff9..33472217c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,7 +17,7 @@ # under the License. # projectVersion=7.0.0-SNAPSHOT -grailsVersion=7.0.0-SNAPSHOT +grailsVersion=7.0.0-RC2 javaVersion=17 unboundidLdapSdk=7.0.2 @@ -27,7 +27,7 @@ casClientCoreVersion=4.0.4 commonsLangVersion=2.6 dumbsterVersion=1.6 gradleCryptoChecksumVersion=1.4.0 -grailsRedisVersion=5.0.0-M5 +grailsRedisVersion=5.0.0-RC2 mailVersion=5.0.0 micronautVersion=4.5.3 pac4jVersion=6.0.6 diff --git a/gradle/rat-root-config.gradle b/gradle/rat-root-config.gradle index 698f8d507..cf8776958 100644 --- a/gradle/rat-root-config.gradle +++ b/gradle/rat-root-config.gradle @@ -19,40 +19,39 @@ apply plugin: 'org.nosphere.apache.rat' tasks.named('rat') { excludes = [ - '.asf.yaml', // ASF metadata for github integration excluded from src zip - '**/build/**', // Gradle generated build directories - 'etc/bin/results/**', // exclude build directories + '**/*.db', // H2 database test files + '**/*.gitkeep', // Empty Gitkeep file + '**/*.png', '**/*.svg', '**/*.ico', '**/*.eps', '**/*.icns', '**/*.jpg', '**/*.jpeg', '**/*.gif', // Image files + '**/.gitattributes', // git configuration isn't code + '**/.gitignore', // git configuration isn't code + '**/.gitkeep', // git configuration isn't code '**/.gradle/**', '**/wrapper/**', 'gradlew*', // gradle wrapper files excluded from src zip + '**/.sdkmanrc', // tool selection files aren't code + '**/build/**', // Gradle generated build directories '**/integration-test/resources/*', // exclude test artifacts - 'out/**', '*.ipr', '**/*.iml', '*.iws', '.idea/**', // Intellij generated files - 'src/*', // exclude build artifacts - 'LICENSE', - 'licenses/**', // licenses directory excluded - 'NOTICE', + '.asf.yaml', // ASF metadata for github integration excluded from src zip + '.github/**', // github configuration isn't shipped in the source distro 'BUILD_DATE', // build artifact for storing the build date / verifying 'CHECKSUMS', // build artifact for storing checksums for easy verification - 'PUBLISHED_ARTIFACTS', // build artifact for storing published artifacts coordinates & paths 'CODE_OF_CONDUCT.md', - '**/.sdkmanrc', // tool selection files aren't code - '**/.gitignore', // git configuration isn't code - '**/.gitkeep', // git configuration isn't code - '**/*.png', '**/*.svg', '**/*.ico', '**/*.eps', '**/*.icns', '**/*.jpg', '**/*.jpeg', '**/*.gif', // Image files - '**/*.db', // H2 database test files - '**/*.gitkeep', // Empty Gitkeep file - 'plugin-rest/spring-security-rest-testapp-profile/skeleton/**', // template files that people are expected to use in the end application - 'plugin-rest/spring-security-rest-testapp-profile/features/**', // template files that people are expected to use in the end application - 'plugin-rest/spring-security-rest-testapp-profile/commands/**', // template files that people are expected to use in the end application - 'plugin-rest/spring-security-rest-testapp-profile/templates/**', // template files that people are expected to use in the end application + 'PUBLISHED_ARTIFACTS', // build artifact for storing published artifacts coordinates & paths + 'etc/bin/results/**', // exclude build directories + 'licenses/**', // licenses directory excluded + 'out/**', '*.ipr', '**/*.iml', '*.iws', '.idea/**', // Intellij generated files 'plugin-core/plugin/src/main/templates/**', // template files that people are expected to use in the end application - 'plugin-ui/plugin/src/main/templates/**', // template files that people are expected to use in the end application + 'plugin-ldap/examples/functional-test-app/grails-app/ldap-servers/d1/data/users.ldif', // test database that does not support comments 'plugin-oauth2/plugin/src/main/templates/**', // template files that people are expected to use in the end application + 'plugin-rest/spring-security-rest-testapp-profile/commands/**', // template files that people are expected to use in the end application + 'plugin-rest/spring-security-rest-testapp-profile/features/**', // template files that people are expected to use in the end application 'plugin-rest/spring-security-rest-testapp-profile/profile.yml', // generated file 'plugin-rest/spring-security-rest-testapp-profile/profile.yml.tmpl', // template that will be included in an end application - 'plugin-ldap/examples/functional-test-app/grails-app/ldap-servers/d1/data/users.ldif', // test database that does not support comments + 'plugin-rest/spring-security-rest-testapp-profile/skeleton/**', // template files that people are expected to use in the end application + 'plugin-rest/spring-security-rest-testapp-profile/templates/**', // template files that people are expected to use in the end application 'plugin-ui/plugin/grails-app/assets/javascripts/jquery/jquery.jdMenu.js', // See license file, MIT licensed 'plugin-ui/plugin/grails-app/assets/javascripts/jquery/jquery.positionBy.js', // See license file, MIT licensed - 'plugin-ui/plugin/grails-app/assets/stylesheets/jquery.jdMenu.slate.css', // See license file, MIT licensed 'plugin-ui/plugin/grails-app/assets/stylesheets/jquery.jdMenu.css', // See license file, MIT licensed + 'plugin-ui/plugin/grails-app/assets/stylesheets/jquery.jdMenu.slate.css', // See license file, MIT licensed + 'plugin-ui/plugin/src/main/templates/**', // template files that people are expected to use in the end application ] // never cache license audits outputs.upToDateWhen { false } diff --git a/plugin-acl/examples/functional-test-app/build.gradle b/plugin-acl/examples/functional-test-app/build.gradle index 3deed62c9..052134e7b 100644 --- a/plugin-acl/examples/functional-test-app/build.gradle +++ b/plugin-acl/examples/functional-test-app/build.gradle @@ -38,7 +38,6 @@ dependencies { runtimeOnly 'com.zaxxer:HikariCP' runtimeOnly 'org.fusesource.jansi:jansi' runtimeOnly 'org.apache.grails:grails-databinding' - runtimeOnly 'org.apache.grails:grails-i18n' runtimeOnly 'org.apache.grails:grails-services' runtimeOnly 'org.apache.grails:grails-url-mappings' runtimeOnly 'org.springframework.boot:spring-boot-autoconfigure' diff --git a/plugin-acl/examples/integration-test-app/build.gradle b/plugin-acl/examples/integration-test-app/build.gradle index 17c0881c9..6240bdecd 100644 --- a/plugin-acl/examples/integration-test-app/build.gradle +++ b/plugin-acl/examples/integration-test-app/build.gradle @@ -36,7 +36,6 @@ dependencies { runtimeOnly 'com.h2database:h2' runtimeOnly 'com.zaxxer:HikariCP' runtimeOnly 'org.apache.grails:grails-databinding' - runtimeOnly 'org.apache.grails:grails-i18n' runtimeOnly 'org.apache.grails:grails-services' runtimeOnly 'org.apache.grails:grails-url-mappings' runtimeOnly 'org.apache.grails:grails-data-hibernate5' diff --git a/plugin-acl/plugin/build.gradle b/plugin-acl/plugin/build.gradle index 8e28b3e42..0d90aa356 100644 --- a/plugin-acl/plugin/build.gradle +++ b/plugin-acl/plugin/build.gradle @@ -45,7 +45,6 @@ dependencies { implementation "org.apache.grails:grails-logging" implementation "org.apache.grails:grails-rest-transforms" implementation "org.apache.grails:grails-databinding" - implementation "org.apache.grails:grails-i18n" implementation "org.apache.grails:grails-services" implementation "org.apache.grails:grails-url-mappings" implementation "org.apache.grails:grails-interceptors" diff --git a/plugin-cas/examples/spring-security-cas-test1/build.gradle b/plugin-cas/examples/spring-security-cas-test1/build.gradle index e88637977..08f208d5d 100644 --- a/plugin-cas/examples/spring-security-cas-test1/build.gradle +++ b/plugin-cas/examples/spring-security-cas-test1/build.gradle @@ -42,7 +42,6 @@ dependencies { runtimeOnly 'com.h2database:h2' runtimeOnly 'com.zaxxer:HikariCP' runtimeOnly 'org.apache.grails:grails-databinding' - runtimeOnly 'org.apache.grails:grails-i18n' runtimeOnly 'org.apache.grails:grails-url-mappings' runtimeOnly 'org.apache.grails:grails-data-hibernate5' runtimeOnly 'org.fusesource.jansi:jansi' diff --git a/plugin-core/examples/functional-test-app/build.gradle b/plugin-core/examples/functional-test-app/build.gradle index b656a78c3..11dc139b6 100644 --- a/plugin-core/examples/functional-test-app/build.gradle +++ b/plugin-core/examples/functional-test-app/build.gradle @@ -37,7 +37,6 @@ dependencies { runtimeOnly 'com.h2database:h2' runtimeOnly 'com.zaxxer:HikariCP' runtimeOnly 'org.apache.grails:grails-data-hibernate5' - runtimeOnly 'org.apache.grails:grails-i18n' runtimeOnly 'org.apache.grails:grails-services' runtimeOnly 'org.apache.grails:grails-url-mappings' runtimeOnly 'org.springframework.boot:spring-boot-autoconfigure' diff --git a/plugin-core/examples/integration-test-app/build.gradle b/plugin-core/examples/integration-test-app/build.gradle index 85f01f2ac..a4779b3d4 100644 --- a/plugin-core/examples/integration-test-app/build.gradle +++ b/plugin-core/examples/integration-test-app/build.gradle @@ -34,7 +34,6 @@ dependencies { runtimeOnly 'com.h2database:h2' runtimeOnly 'com.zaxxer:HikariCP' runtimeOnly 'org.apache.grails:grails-data-hibernate5' - runtimeOnly 'org.apache.grails:grails-i18n' runtimeOnly 'org.apache.grails:grails-services' runtimeOnly 'org.springframework.boot:spring-boot-starter-logging' runtimeOnly 'org.springframework.boot:spring-boot-autoconfigure' diff --git a/plugin-core/examples/misc-functional-test-app/grails-spring-security-group/build.gradle b/plugin-core/examples/misc-functional-test-app/grails-spring-security-group/build.gradle index 6b8f933c6..0d1019cd1 100644 --- a/plugin-core/examples/misc-functional-test-app/grails-spring-security-group/build.gradle +++ b/plugin-core/examples/misc-functional-test-app/grails-spring-security-group/build.gradle @@ -46,7 +46,6 @@ dependencies { runtimeOnly 'com.h2database:h2' runtimeOnly 'com.zaxxer:HikariCP' - runtimeOnly 'org.apache.grails:grails-i18n' runtimeOnly 'org.apache.grails:grails-url-mappings' runtimeOnly 'org.apache.grails:grails-data-hibernate5' runtimeOnly 'org.springframework.boot:spring-boot-autoconfigure' diff --git a/plugin-ldap/examples/custom-user-details-context-mapper/build.gradle b/plugin-ldap/examples/custom-user-details-context-mapper/build.gradle index aee6907fb..2274d1c74 100644 --- a/plugin-ldap/examples/custom-user-details-context-mapper/build.gradle +++ b/plugin-ldap/examples/custom-user-details-context-mapper/build.gradle @@ -45,7 +45,6 @@ dependencies { runtimeOnly 'com.h2database:h2' runtimeOnly 'com.zaxxer:HikariCP' runtimeOnly 'org.fusesource.jansi:jansi' - runtimeOnly 'org.apache.grails:grails-i18n' runtimeOnly 'org.apache.grails:grails-databinding' runtimeOnly 'org.apache.grails:grails-url-mappings' runtimeOnly 'org.apache.grails:grails-data-hibernate5' diff --git a/plugin-ldap/examples/functional-test-app/build.gradle b/plugin-ldap/examples/functional-test-app/build.gradle index c808d443c..45be18d9f 100644 --- a/plugin-ldap/examples/functional-test-app/build.gradle +++ b/plugin-ldap/examples/functional-test-app/build.gradle @@ -46,7 +46,6 @@ dependencies { runtimeOnly 'com.h2database:h2' runtimeOnly 'com.zaxxer:HikariCP' runtimeOnly 'org.fusesource.jansi:jansi' - runtimeOnly 'org.apache.grails:grails-i18n' runtimeOnly 'org.apache.grails:grails-databinding' runtimeOnly 'org.apache.grails:grails-services' runtimeOnly 'org.apache.grails:grails-url-mappings' diff --git a/plugin-ldap/examples/retrieve-db-roles/build.gradle b/plugin-ldap/examples/retrieve-db-roles/build.gradle index 68bc03099..6bca8da89 100644 --- a/plugin-ldap/examples/retrieve-db-roles/build.gradle +++ b/plugin-ldap/examples/retrieve-db-roles/build.gradle @@ -45,7 +45,6 @@ dependencies { runtimeOnly 'com.h2database:h2' runtimeOnly 'com.zaxxer:HikariCP' runtimeOnly 'org.fusesource.jansi:jansi' - runtimeOnly 'org.apache.grails:grails-i18n' runtimeOnly 'org.apache.grails:grails-databinding' runtimeOnly 'org.apache.grails:grails-services' runtimeOnly 'org.apache.grails:grails-url-mappings' diff --git a/plugin-ldap/examples/retrieve-group-roles/build.gradle b/plugin-ldap/examples/retrieve-group-roles/build.gradle index e64ee6b67..e5a94e094 100644 --- a/plugin-ldap/examples/retrieve-group-roles/build.gradle +++ b/plugin-ldap/examples/retrieve-group-roles/build.gradle @@ -44,7 +44,6 @@ dependencies { runtimeOnly 'com.h2database:h2' runtimeOnly 'com.zaxxer:HikariCP' runtimeOnly 'org.fusesource.jansi:jansi' - runtimeOnly 'org.apache.grails:grails-i18n' runtimeOnly 'org.apache.grails:grails-databinding' runtimeOnly 'org.apache.grails:grails-url-mappings' runtimeOnly 'org.apache.grails:grails-services' diff --git a/plugin-oauth2/plugin/build.gradle b/plugin-oauth2/plugin/build.gradle index 8b2612194..6399886a5 100644 --- a/plugin-oauth2/plugin/build.gradle +++ b/plugin-oauth2/plugin/build.gradle @@ -84,7 +84,6 @@ dependencies { // impl: ModelAndView } - runtimeOnly 'org.apache.grails:grails-i18n' runtimeOnly 'org.apache.grails:grails-services' compileOnly 'org.apache.grails:grails-core', { // Provided as this is a Grails plugin diff --git a/plugin-ui/examples/extended/build.gradle b/plugin-ui/examples/extended/build.gradle index affdf5a5e..9840d6bae 100644 --- a/plugin-ui/examples/extended/build.gradle +++ b/plugin-ui/examples/extended/build.gradle @@ -45,7 +45,6 @@ dependencies { runtimeOnly 'cloud.wondrify:asset-pipeline-grails' runtimeOnly 'com.h2database:h2' runtimeOnly 'com.zaxxer:HikariCP' - runtimeOnly 'org.apache.grails:grails-i18n' runtimeOnly 'org.apache.grails:grails-services' runtimeOnly 'org.apache.grails:grails-url-mappings' runtimeOnly 'org.fusesource.jansi:jansi' diff --git a/plugin-ui/examples/simple/build.gradle b/plugin-ui/examples/simple/build.gradle index d9f89f550..144e6a4ca 100644 --- a/plugin-ui/examples/simple/build.gradle +++ b/plugin-ui/examples/simple/build.gradle @@ -45,7 +45,6 @@ dependencies { runtimeOnly 'cloud.wondrify:asset-pipeline-grails' runtimeOnly 'com.h2database:h2' runtimeOnly 'com.zaxxer:HikariCP' - runtimeOnly 'org.apache.grails:grails-i18n' runtimeOnly 'org.apache.grails:grails-services' runtimeOnly 'org.apache.grails:grails-url-mappings' runtimeOnly 'org.fusesource.jansi:jansi' diff --git a/plugin-ui/plugin/build.gradle b/plugin-ui/plugin/build.gradle index 3c7e36fde..e83449047 100644 --- a/plugin-ui/plugin/build.gradle +++ b/plugin-ui/plugin/build.gradle @@ -63,7 +63,6 @@ dependencies { compileOnly 'org.apache.grails:grails-domain-class' runtimeOnly 'cloud.wondrify:asset-pipeline-grails' - runtimeOnly 'org.apache.grails:grails-i18n' testImplementation 'org.apache.grails:grails-testing-support-web' testImplementation 'org.spockframework:spock-core'