From 3ffbdab6698163b7702a36597ead2a9740875ebd Mon Sep 17 00:00:00 2001 From: Frederik Hahne Date: Sat, 30 Dec 2023 22:30:45 +0100 Subject: [PATCH] replace gradle apply from cache with cache convention plugin (#24700) * replace gradle apply from cache with cache convention plugin updates #19615 * drop gradle/cache.gradle.ejs template --------- Co-authored-by: Marcelo Shima --- .../server/templates/gradle.properties.ejs | 10 --- .../__snapshots__/generator.spec.ts.snap | 74 +++++++++++++------ generators/spring-cache/cleanup.ts | 5 ++ generators/spring-cache/files.ts | 4 +- generators/spring-cache/generator.ts | 27 ++++++- ...ipster.spring-cache-conventions.gradle.ejs | 47 ++++++++++++ .../templates/gradle/cache.gradle.ejs | 46 ------------ 7 files changed, 133 insertions(+), 80 deletions(-) create mode 100644 generators/spring-cache/templates/buildSrc/src/main/groovy/jhipster.spring-cache-conventions.gradle.ejs delete mode 100644 generators/spring-cache/templates/gradle/cache.gradle.ejs diff --git a/generators/server/templates/gradle.properties.ejs b/generators/server/templates/gradle.properties.ejs index 8dca71f8aaf9..e30c4a9dce58 100644 --- a/generators/server/templates/gradle.properties.ejs +++ b/generators/server/templates/gradle.properties.ejs @@ -32,16 +32,6 @@ archunitJunit5Version=<%- javaDependencies['archunit-junit5'] %> <%_ if (enableSwaggerCodegen) { _%> jacksonDatabindNullableVersion=<%- javaDependencies['jackson-databind-nullable'] %> <%_ } _%> -<%_ if (cacheProviderCaffeine) { _%> -typesafeConfigVersion=<%- javaDependencies.typesafe %> -<%_ } _%> -<%_ if (cacheProviderHazelcast) { _%> -hazelcastSpringVersion=<%- javaDependencies['hazelcast-spring'] %> - <%_ if (enableHibernateCache) { _%> -hazelcastHibernate53Version=<%- javaDependencies['hazelcast-hibernate53'] %> - <%_ } _%> -<%_ } _%> - <%_ if (databaseTypeSql && reactive) { _%> commonsBeanutilsVersion=<%- javaDependencies['commons-beanutils'] %> <%_ } _%> diff --git a/generators/spring-cache/__snapshots__/generator.spec.ts.snap b/generators/spring-cache/__snapshots__/generator.spec.ts.snap index 84780a4a82d2..17187310a2d6 100644 --- a/generators/spring-cache/__snapshots__/generator.spec.ts.snap +++ b/generators/spring-cache/__snapshots__/generator.spec.ts.snap @@ -5,7 +5,7 @@ exports[`generator - spring-cache caffeine-gradle should match files snapshot 1` ".yo-rc.json": { "stateCleared": "modified", }, - "gradle/cache.gradle": { + "buildSrc/src/main/groovy/jhipster.spring-cache-conventions.gradle": { "stateCleared": "modified", }, "src/main/java/com/mycompany/myapp/config/CacheConfiguration.java": { @@ -16,9 +16,21 @@ exports[`generator - spring-cache caffeine-gradle should match files snapshot 1` exports[`generator - spring-cache caffeine-gradle should match source calls 1`] = ` { - "applyFromGradle": [ + "addGradleBuildSrcDependencyCatalogVersion": [ { - "script": "gradle/cache.gradle", + "name": "typesafe", + "version": "'TYPESAFE-VERSION'", + }, + ], + "addGradleDependencyCatalogVersion": [ + { + "name": "typesafe", + "version": "'TYPESAFE-VERSION'", + }, + ], + "addGradlePlugin": [ + { + "id": "jhipster.spring-cache-conventions", }, ], } @@ -89,7 +101,7 @@ exports[`generator - spring-cache ehcache-gradle should match files snapshot 1`] ".yo-rc.json": { "stateCleared": "modified", }, - "gradle/cache.gradle": { + "buildSrc/src/main/groovy/jhipster.spring-cache-conventions.gradle": { "stateCleared": "modified", }, "src/main/java/com/mycompany/myapp/config/CacheConfiguration.java": { @@ -100,9 +112,9 @@ exports[`generator - spring-cache ehcache-gradle should match files snapshot 1`] exports[`generator - spring-cache ehcache-gradle should match source calls 1`] = ` { - "applyFromGradle": [ + "addGradlePlugin": [ { - "script": "gradle/cache.gradle", + "id": "jhipster.spring-cache-conventions", }, ], } @@ -159,7 +171,7 @@ exports[`generator - spring-cache hazelcast-gradle should match files snapshot 1 ".yo-rc.json": { "stateCleared": "modified", }, - "gradle/cache.gradle": { + "buildSrc/src/main/groovy/jhipster.spring-cache-conventions.gradle": { "stateCleared": "modified", }, "src/main/java/com/mycompany/myapp/config/CacheConfiguration.java": { @@ -170,9 +182,29 @@ exports[`generator - spring-cache hazelcast-gradle should match files snapshot 1 exports[`generator - spring-cache hazelcast-gradle should match source calls 1`] = ` { - "applyFromGradle": [ + "addGradleBuildSrcDependencyCatalogVersion": [ + { + "name": "hazelcast-spring", + "version": "'HAZELCAST-SPRING-VERSION'", + }, + { + "name": "hazelcast-hibernate53", + "version": "'HAZELCAST-HIBERNATE-53-VERSION'", + }, + ], + "addGradleDependencyCatalogVersion": [ { - "script": "gradle/cache.gradle", + "name": "hazelcast-spring", + "version": "'HAZELCAST-SPRING-VERSION'", + }, + { + "name": "hazelcast-hibernate53", + "version": "'HAZELCAST-HIBERNATE-53-VERSION'", + }, + ], + "addGradlePlugin": [ + { + "id": "jhipster.spring-cache-conventions", }, ], } @@ -241,7 +273,7 @@ exports[`generator - spring-cache infinispan-gradle should match files snapshot ".yo-rc.json": { "stateCleared": "modified", }, - "gradle/cache.gradle": { + "buildSrc/src/main/groovy/jhipster.spring-cache-conventions.gradle": { "stateCleared": "modified", }, "src/main/java/com/mycompany/myapp/config/CacheConfiguration.java": { @@ -255,9 +287,9 @@ exports[`generator - spring-cache infinispan-gradle should match files snapshot exports[`generator - spring-cache infinispan-gradle should match source calls 1`] = ` { - "applyFromGradle": [ + "addGradlePlugin": [ { - "script": "gradle/cache.gradle", + "id": "jhipster.spring-cache-conventions", }, ], } @@ -324,7 +356,7 @@ exports[`generator - spring-cache memcached-gradle should match files snapshot 1 ".yo-rc.json": { "stateCleared": "modified", }, - "gradle/cache.gradle": { + "buildSrc/src/main/groovy/jhipster.spring-cache-conventions.gradle": { "stateCleared": "modified", }, "src/main/java/com/mycompany/myapp/config/CacheConfiguration.java": { @@ -335,9 +367,9 @@ exports[`generator - spring-cache memcached-gradle should match files snapshot 1 exports[`generator - spring-cache memcached-gradle should match source calls 1`] = ` { - "applyFromGradle": [ + "addGradlePlugin": [ { - "script": "gradle/cache.gradle", + "id": "jhipster.spring-cache-conventions", }, ], } @@ -392,7 +424,7 @@ exports[`generator - spring-cache redis-gradle should match files snapshot 1`] = ".yo-rc.json": { "stateCleared": "modified", }, - "gradle/cache.gradle": { + "buildSrc/src/main/groovy/jhipster.spring-cache-conventions.gradle": { "stateCleared": "modified", }, "src/main/java/com/mycompany/myapp/config/CacheConfiguration.java": { @@ -412,15 +444,15 @@ exports[`generator - spring-cache redis-gradle should match files snapshot 1`] = exports[`generator - spring-cache redis-gradle should match source calls 1`] = ` { - "addTestSpringFactory": [ + "addGradlePlugin": [ { - "key": "org.springframework.test.context.ContextCustomizerFactory", - "value": "com.mycompany.myapp.config.RedisTestContainersSpringContextCustomizerFactory", + "id": "jhipster.spring-cache-conventions", }, ], - "applyFromGradle": [ + "addTestSpringFactory": [ { - "script": "gradle/cache.gradle", + "key": "org.springframework.test.context.ContextCustomizerFactory", + "value": "com.mycompany.myapp.config.RedisTestContainersSpringContextCustomizerFactory", }, ], } diff --git a/generators/spring-cache/cleanup.ts b/generators/spring-cache/cleanup.ts index 2f1e8add269d..e3be4599b13d 100644 --- a/generators/spring-cache/cleanup.ts +++ b/generators/spring-cache/cleanup.ts @@ -34,4 +34,9 @@ export default function cleanupTask(this: Generator, { application }: any) { this.removeFile(`${application.javaPackageTestDir}RedisTestContainerExtension.java`); } } + if (application.buildToolGradle) { + if (this.isJhipsterVersionLessThan('8.1.1')) { + this.removeFile('gradle/cache.gradle'); + } + } } diff --git a/generators/spring-cache/files.ts b/generators/spring-cache/files.ts index 8c971a99992f..80dc9273217d 100644 --- a/generators/spring-cache/files.ts +++ b/generators/spring-cache/files.ts @@ -18,14 +18,14 @@ */ import Generator from './generator.js'; import { moveToJavaPackageSrcDir, moveToJavaPackageTestDir } from '../java/support/index.js'; -import { SERVER_MAIN_SRC_DIR, SERVER_TEST_SRC_DIR } from '../generator-constants.js'; +import { SERVER_MAIN_SRC_DIR, SERVER_TEST_SRC_DIR, GRADLE_BUILD_SRC_MAIN_DIR } from '../generator-constants.js'; import { WriteFileSection } from '../base/api.js'; const files: WriteFileSection = { cacheFiles: [ { condition: data => data.buildToolGradle, - templates: ['gradle/cache.gradle'], + templates: [`${GRADLE_BUILD_SRC_MAIN_DIR}/jhipster.spring-cache-conventions.gradle`], }, { path: `${SERVER_MAIN_SRC_DIR}_package_/`, diff --git a/generators/spring-cache/generator.ts b/generators/spring-cache/generator.ts index 465f01438945..e43b42d0a75d 100644 --- a/generators/spring-cache/generator.ts +++ b/generators/spring-cache/generator.ts @@ -99,7 +99,32 @@ export default class SpringCacheGenerator extends BaseApplicationGenerator { }, applyGradleScript({ source, application }) { if (application.buildToolGradle) { - source.applyFromGradle?.({ script: 'gradle/cache.gradle' }); + const applicationAny = application as any; + if (applicationAny.cacheProviderCaffeine) { + source.addGradleDependencyCatalogVersion?.({ name: 'typesafe', version: application.javaDependencies?.typesafe }); + source.addGradleBuildSrcDependencyCatalogVersion?.({ name: 'typesafe', version: application.javaDependencies?.typesafe }); + } + if (applicationAny.cacheProviderHazelcast) { + source.addGradleDependencyCatalogVersion?.({ + name: 'hazelcast-spring', + version: application.javaDependencies?.['hazelcast-spring'], + }); + source.addGradleBuildSrcDependencyCatalogVersion?.({ + name: 'hazelcast-spring', + version: application.javaDependencies?.['hazelcast-spring'], + }); + if (applicationAny.enableHibernateCache) { + source.addGradleDependencyCatalogVersion?.({ + name: 'hazelcast-hibernate53', + version: application.javaDependencies?.['hazelcast-hibernate53'], + }); + source.addGradleBuildSrcDependencyCatalogVersion?.({ + name: 'hazelcast-hibernate53', + version: application.javaDependencies?.['hazelcast-hibernate53'], + }); + } + } + source.addGradlePlugin?.({ id: 'jhipster.spring-cache-conventions' }); } }, addDependencies({ application, source }) { diff --git a/generators/spring-cache/templates/buildSrc/src/main/groovy/jhipster.spring-cache-conventions.gradle.ejs b/generators/spring-cache/templates/buildSrc/src/main/groovy/jhipster.spring-cache-conventions.gradle.ejs new file mode 100644 index 000000000000..e499c3f48c76 --- /dev/null +++ b/generators/spring-cache/templates/buildSrc/src/main/groovy/jhipster.spring-cache-conventions.gradle.ejs @@ -0,0 +1,47 @@ +dependencies { + implementation "org.springframework.boot:spring-boot-starter-cache" + <%_ if (cacheProviderEhcache || cacheProviderCaffeine || cacheProviderHazelcast || cacheProviderInfinispan || cacheProviderMemcached) { _%> + implementation "javax.cache:cache-api" + <%_ } _%> + <%_ if (cacheProviderEhcache) { _%> + implementation group: "org.ehcache", name: "ehcache", classifier: "jakarta" + <%_ if (enableHibernateCache) { _%> + implementation "org.hibernate.orm:hibernate-jcache" + <%_ } _%> + <%_ } _%> + <%_ if (cacheProviderCaffeine) { _%> + implementation "com.github.ben-manes.caffeine:caffeine" + implementation "com.github.ben-manes.caffeine:jcache" + implementation "com.typesafe:config:${libs.versions.typesafe.get()}" + <%_ if (enableHibernateCache) { _%> + implementation "org.hibernate.orm:hibernate-jcache" + <%_ } _%> + <%_ } _%> + <%_ if (cacheProviderHazelcast) { _%> + <%_ if (enableHibernateCache) { _%> + implementation "com.hazelcast:hazelcast-hibernate53:${libs.versions.hazelcast.hibernate53.get()}" + <%_ } _%> + implementation "com.hazelcast:hazelcast-spring:${libs.versions.hazelcast.spring.get()}" + <%_ } _%> + <%_ if (cacheProviderInfinispan) { _%> + implementation "org.infinispan:infinispan-hibernate-cache-v62" + implementation "org.infinispan:infinispan-spring-boot3-starter-embedded" + implementation "org.infinispan:infinispan-commons-jakarta" + implementation "org.infinispan:infinispan-core-jakarta" + compileOnly "org.infinispan:infinispan-component-annotations" + <%_ } _%> + <%_ if (cacheProviderMemcached) { _%> + implementation "com.google.code.simple-spring-memcached:spring-cache" + implementation "com.google.code.simple-spring-memcached:xmemcached-provider" + implementation "com.googlecode.xmemcached:xmemcached" + <%_ } _%> + <%_ if (cacheProviderRedis) { _%> + implementation "org.redisson:redisson" + <%_ if (enableHibernateCache) { _%> + implementation "org.hibernate.orm:hibernate-jcache" + <%_ } _%> + testImplementation "org.testcontainers:junit-jupiter" + testImplementation "org.testcontainers:testcontainers" + <%_ } _%> + } + \ No newline at end of file diff --git a/generators/spring-cache/templates/gradle/cache.gradle.ejs b/generators/spring-cache/templates/gradle/cache.gradle.ejs deleted file mode 100644 index f9ba0a1b68c4..000000000000 --- a/generators/spring-cache/templates/gradle/cache.gradle.ejs +++ /dev/null @@ -1,46 +0,0 @@ -dependencies { - implementation "org.springframework.boot:spring-boot-starter-cache" -<%_ if (cacheProviderEhcache || cacheProviderCaffeine || cacheProviderHazelcast || cacheProviderInfinispan || cacheProviderMemcached) { _%> - implementation "javax.cache:cache-api" -<%_ } _%> -<%_ if (cacheProviderEhcache) { _%> - implementation group: "org.ehcache", name: "ehcache", classifier: "jakarta" - <%_ if (enableHibernateCache) { _%> - implementation "org.hibernate.orm:hibernate-jcache" - <%_ } _%> -<%_ } _%> -<%_ if (cacheProviderCaffeine) { _%> - implementation "com.github.ben-manes.caffeine:caffeine" - implementation "com.github.ben-manes.caffeine:jcache" - implementation "com.typesafe:config:${typesafeConfigVersion}" - <%_ if (enableHibernateCache) { _%> - implementation "org.hibernate.orm:hibernate-jcache" - <%_ } _%> -<%_ } _%> -<%_ if (cacheProviderHazelcast) { _%> - <%_ if (enableHibernateCache) { _%> - implementation "com.hazelcast:hazelcast-hibernate53:${hazelcastHibernate53Version}" - <%_ } _%> - implementation "com.hazelcast:hazelcast-spring:${hazelcastSpringVersion}" -<%_ } _%> -<%_ if (cacheProviderInfinispan) { _%> - implementation "org.infinispan:infinispan-hibernate-cache-v62" - implementation "org.infinispan:infinispan-spring-boot3-starter-embedded" - implementation "org.infinispan:infinispan-commons-jakarta" - implementation "org.infinispan:infinispan-core-jakarta" - compileOnly "org.infinispan:infinispan-component-annotations" -<%_ } _%> -<%_ if (cacheProviderMemcached) { _%> - implementation "com.google.code.simple-spring-memcached:spring-cache" - implementation "com.google.code.simple-spring-memcached:xmemcached-provider" - implementation "com.googlecode.xmemcached:xmemcached" -<%_ } _%> -<%_ if (cacheProviderRedis) { _%> - implementation "org.redisson:redisson" - <%_ if (enableHibernateCache) { _%> - implementation "org.hibernate.orm:hibernate-jcache" - <%_ } _%> - testImplementation "org.testcontainers:junit-jupiter" - testImplementation "org.testcontainers:testcontainers" -<%_ } _%> -}