diff --git a/.github/workflows/deploy_release_mc.yml b/.github/workflows/deploy_release_mc.yml index b515adf84f..52a95c1b20 100644 --- a/.github/workflows/deploy_release_mc.yml +++ b/.github/workflows/deploy_release_mc.yml @@ -11,7 +11,8 @@ permissions: packages: write env: - GRADLE_VERSION: 7.6 # Gradle version used + GRADLE_VERSION: 8.5 # Gradle version used + JAVA_VERSION: 21 # Java version used GRADLE_CLI_OPTS: "-Pci" # CLI option passed to Gradle jobs: @@ -20,9 +21,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout project sources - uses: actions/checkout@v3 + uses: actions/checkout@v4 + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: ${{ env.JAVA_VERSION }} - name: Gradle DeployMC - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-version: ${{env.GRADLE_VERSION}} # pass the tag as the version property (${{ github.ref_name }}) diff --git a/.github/workflows/deploy_snapshot_mc.yml b/.github/workflows/deploy_snapshot_mc.yml index c07e046983..c5f457a46f 100644 --- a/.github/workflows/deploy_snapshot_mc.yml +++ b/.github/workflows/deploy_snapshot_mc.yml @@ -18,7 +18,8 @@ permissions: packages: write env: - GRADLE_VERSION: 7.6 # Gradle version used + GRADLE_VERSION: 8.5 # Gradle version used + JAVA_VERSION: 21 # Java version used GRADLE_CLI_OPTS: "-Pci" # CLI option passed to Gradle jobs: @@ -28,9 +29,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout project sources - uses: actions/checkout@v3 + uses: actions/checkout@v4 + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: ${{ env.JAVA_VERSION }} - name: Deploy the snapshot - uses: gradle/actions/setup-gradle@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-version: ${{env.GRADLE_VERSION}} arguments: deployMC ${{env.GRADLE_CLI_OPTS}} -PmavenPassword=${{secrets.SE_NEXUS_PASSWORD}} -PmavenUser=${{secrets.SE_NEXUS_USER}} -PgenEMF=true -PgenTR=true -PgenTagging=true diff --git a/.github/workflows/gradle_mc.yml b/.github/workflows/gradle_mc.yml index d88185a8da..45c4d078db 100644 --- a/.github/workflows/gradle_mc.yml +++ b/.github/workflows/gradle_mc.yml @@ -18,7 +18,8 @@ on: env: - GRADLE_VERSION: 7.6 # Gradle version used + GRADLE_VERSION: 8.5 # Gradle version used + JAVA_VERSION: 21 # Java version used GRADLE_CLI_OPTS: "-Pci --build-cache " # CLI option passed to Gradle GRADLE_BUILD_ACTION_CACHE_KEY_JOB: "test-cache-${{ github.head_ref }}.${{ github.sha }}" @@ -34,6 +35,11 @@ jobs: steps: - name: Checkout project sources uses: actions/checkout@v4 + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: ${{ env.JAVA_VERSION }} - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: @@ -52,6 +58,11 @@ jobs: steps: - name: Checkout project sources uses: actions/checkout@v4 + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: ${{ env.JAVA_VERSION }} - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: @@ -71,6 +82,11 @@ jobs: steps: - name: Checkout project sources uses: actions/checkout@v4 + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: ${{ env.JAVA_VERSION }} - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: @@ -90,6 +106,11 @@ jobs: steps: - name: Checkout project sources uses: actions/checkout@v4 + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: ${{ env.JAVA_VERSION }} - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: @@ -109,6 +130,11 @@ jobs: steps: - name: Checkout project sources uses: actions/checkout@v4 + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: ${{ env.JAVA_VERSION }} - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: @@ -130,6 +156,11 @@ jobs: steps: - name: Checkout project sources uses: actions/checkout@v4 + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: ${{ env.JAVA_VERSION }} - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: @@ -149,6 +180,11 @@ jobs: steps: - name: Checkout project sources uses: actions/checkout@v4 + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: ${{ env.JAVA_VERSION }} - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: @@ -168,6 +204,11 @@ jobs: steps: - name: Checkout project sources uses: actions/checkout@v4 + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: ${{ env.JAVA_VERSION }} - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: @@ -187,6 +228,11 @@ jobs: steps: - name: Checkout project sources uses: actions/checkout@v4 + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: ${{ env.JAVA_VERSION }} - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: diff --git a/build.gradle b/build.gradle index 23e7b9bad7..c1a5c347a6 100644 --- a/build.gradle +++ b/build.gradle @@ -60,6 +60,9 @@ subprojects { apply plugin: 'java-library' apply plugin: 'io.github.themrmilchmann.ecj' + ecj { + compilerVersion = "3.44.0" + } tasks.withType(Test) { useJUnitPlatform() @@ -94,8 +97,8 @@ subprojects { } tasks.withType(JavaCompile).configureEach { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 options.encoding = "UTF-8" options.deprecation = false options.warnings = false @@ -104,7 +107,7 @@ subprojects { java { withSourcesJar() toolchain { - languageVersion = JavaLanguageVersion.of(11) + languageVersion = JavaLanguageVersion.of(21) } } diff --git a/docs/GettingStarted.md b/docs/GettingStarted.md index f69a10698e..f50cba931c 100644 --- a/docs/GettingStarted.md +++ b/docs/GettingStarted.md @@ -25,11 +25,11 @@ information about the example `Automata` language are available in We start with the JDK: Please perform the following steps to install the Java Development Kit (JDK) and validate that the installation was successful: -- Install a JDK with at least version 11 provided by Oracle or OpenJDK. +- Install a JDK with at least version 21 provided by Oracle or OpenJDK. - Make sure the environment variable `JAVA_HOME` points to the installed JDK, and *not* to the JRE, e.g., the following would be good: - - `/user/lib/jvm/java-11-openjdk` on UNIX or - - `C:\Program Files\Java\jdk-11.*` on Windows. + - `/user/lib/jvm/java-21-openjdk` on UNIX or + - `C:\Program Files\Java\jdk-21.*` on Windows. You will need this in order to run the Java compiler for compiling the generated Java source files. - Also make sure that the system variable is set such that the Java @@ -40,8 +40,8 @@ Java Development Kit (JDK) and validate that the installation was successful: - Test whether the setup was successful. Open a command line shell in any directory. Execute the command `javac -version`. If this command is recognized and the shell displays the version of the installed - JDK (e.g., `javac 11.0.5`), then the setup was successful. -- *(Optional)* Install [Gradle](https://gradle.org/install/) version 7.6. + JDK (e.g., `javac 21.0.10`), then the setup was successful. +- *(Optional)* Install [Gradle](https://gradle.org/install/) version 8.5. Now we have the prerequisites to run MontiCore from the command line (CLI) or alternatively using Gradle. diff --git a/docs/Gradle.md b/docs/Gradle.md index b812730b7d..3d23d2bd68 100644 --- a/docs/Gradle.md +++ b/docs/Gradle.md @@ -43,10 +43,10 @@ plugins { } java { - // Configure the java toolchain to use Java 11 (overriding the locally installed JDK) + // Configure the java toolchain to use Java 21 (overriding the locally installed JDK) // https://docs.gradle.org/current/userguide/toolchains.html toolchain { - languageVersion = JavaLanguageVersion.of(11) + languageVersion = JavaLanguageVersion.of(21) } } diff --git a/gradle.properties b/gradle.properties index 6c30039193..ec4417c1f3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -27,9 +27,9 @@ junit_version = 5.14.1 junit_platform_version = 1.14.1 emf_compare_version =1.2.0 ecore_version =2.16.0 -commons_lang3_version = 3.8.1 +commons_lang3_version = 3.20.0 freemarker_version = 2.3.34 guava_version =31.1-jre -shadow_plugin_version=7.1.2 +shadow_plugin_version=8.3.9 cd4a_version =7.8.0 diff --git a/monticore-generator/build.gradle b/monticore-generator/build.gradle index 5e1bcb57c4..417c9ed7a9 100644 --- a/monticore-generator/build.gradle +++ b/monticore-generator/build.gradle @@ -11,7 +11,7 @@ buildscript { plugins { id "java-library" id "io.github.themrmilchmann.ecj" version "0.2.0" // Eclipse compiler as it's much faster than javac - id "com.github.johnrengelman.shadow" version "$shadow_plugin_version" + id "com.gradleup.shadow" version "$shadow_plugin_version" id 'maven-publish' id "jacoco" } @@ -21,6 +21,10 @@ description = 'MontiCore: Generator' ext.grammarDir = 'src/main/grammars' +ecj { + compilerVersion = "3.44.0" +} + allprojects { group = "de.monticore" buildDir = file("$projectDir/target") @@ -44,7 +48,7 @@ dependencies { implementation "org.apache.commons:commons-lang3:$commons_lang3_version" implementation "org.freemarker:freemarker:$freemarker_version" implementation "commons-cli:commons-cli:$commons_cli_version" - implementation group: 'org.apache.commons', name: 'commons-text', version: '1.10.0' + implementation "org.apache.commons:commons-text:$commons_text_version" // implementation 'org.slf4j:slf4j-api:1.7.10' implementation 'ch.qos.logback:logback-classic:[1.2.9,1.3.0)' // we appear to be incompatible with logback >= 1.3.0 @@ -52,18 +56,19 @@ dependencies { implementation "de.monticore.lang:cd4analysis:$cd4a_version" implementation "org.antlr:antlr4:$antlr_version" - implementation 'org.apache.groovy:groovy:4.0.23' - implementation("com.google.guava:guava:$guava_version") + implementation "org.apache.groovy:groovy:$groovy_version" + implementation "com.google.guava:guava:$guava_version" + implementation "com.github.spotbugs:spotbugs-annotations:$spotbugs_annotations_version" implementation "org.apache.commons:commons-lang3:$commons_lang3_version" testImplementation 'com.github.javaparser:javaparser-symbol-solver-core:3.24.2' - testImplementation 'org.mockito:mockito-core:4.5.1' + testImplementation "org.mockito:mockito-core:$mockito_version" } allprojects { apply plugin: "java" tasks.withType(JavaCompile).configureEach { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 options.encoding = "UTF-8" options.deprecation = false options.warnings = false @@ -71,7 +76,7 @@ allprojects { java { withSourcesJar() toolchain { - languageVersion = JavaLanguageVersion.of(11) + languageVersion = JavaLanguageVersion.of(21) } } dependencies { diff --git a/monticore-generator/gradle-plugin/build.gradle b/monticore-generator/gradle-plugin/build.gradle index d9a0d39ed7..6eeb81173e 100644 --- a/monticore-generator/gradle-plugin/build.gradle +++ b/monticore-generator/gradle-plugin/build.gradle @@ -22,6 +22,8 @@ dependencies { implementation "de.monticore:monticore-runtime:$previous_mc_version" // Required due to json -> substitute this to remove the runtime from the gradle projects classpath mcTool project(":") // depend on the generator subproject + implementation "com.github.spotbugs:spotbugs-annotations:$spotbugs_annotations_version" + testImplementation gradleTestKit() testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_version" diff --git a/monticore-generator/gradle-plugin/src/test/java/de/monticore/gradle/MCGenPluginTest.java b/monticore-generator/gradle-plugin/src/test/java/de/monticore/gradle/MCGenPluginTest.java index 4fec85cf01..fd7367d715 100644 --- a/monticore-generator/gradle-plugin/src/test/java/de/monticore/gradle/MCGenPluginTest.java +++ b/monticore-generator/gradle-plugin/src/test/java/de/monticore/gradle/MCGenPluginTest.java @@ -85,24 +85,19 @@ File createDirectory(Path path) throws IOException{ } @Test - public void testCanApplyPlugin_v7_4_2() throws IOException { - this.testCanApplyPlugin("7.4.2"); + public void testCanApplyPlugin_v8_5() throws IOException { + this.testCanApplyPlugin("8.5"); } - - @Test - public void testCanApplyPlugin_v7_6_4() throws IOException { - this.testCanApplyPlugin("7.6.4"); - } - - @Test - public void testCanApplyPlugin_v8_0_1() throws IOException { - this.testCanApplyPlugin("8.0.1"); - } - + @Test public void testCanApplyPlugin_v8_7() throws IOException { this.testCanApplyPlugin("8.7"); } + + @Test + public void testCanApplyPlugin_v8_14_4() throws IOException { + this.testCanApplyPlugin("8.14.4"); + } // Test if the plugin can be applied @@ -127,25 +122,21 @@ void testCanApplyPlugin(String version) throws IOException { ////////////////////// + @Test - public void testGenerateGrammar_v7_4_2() throws IOException { - this.testGenerateGrammar("7.4.2"); - } - - @Test - public void testGenerateGrammar_v7_6_4() throws IOException { - this.testGenerateGrammar("7.6.4"); - } - - @Test - public void testGenerateGrammar_v8_0_1() throws IOException { - this.testGenerateGrammar("8.0.1"); + public void testGenerateGrammar_v8_5() throws IOException { + this.testGenerateGrammar("8.5"); } - + @Test public void testGenerateGrammar_v8_7() throws IOException { this.testGenerateGrammar("8.7"); } + + @Test + public void testGenerateGrammar_v8_14_4() throws IOException { + this.testGenerateGrammar("8.14.4"); + } // Test if the generate task succeeds // and is cacheable @@ -260,25 +251,21 @@ void testGenerateGrammar(String version) throws IOException { } ////////////////////// + @Test - public void testMultiProject_v7_4_2() throws IOException { - this.testMultiProject("7.4.2"); - } - - @Test - public void testMultiProject_v7_6_4() throws IOException { - this.testMultiProject("7.6.4"); + public void testMultiProject_v8_5() throws IOException { + this.testMultiProject("8.5"); } - - @Test - public void testMultiProject_v8_0_1() throws IOException { - this.testMultiProject("8.0.1"); - } - + @Test public void testMultiProject_v8_7() throws IOException { this.testMultiProject("8.7"); } + + @Test + public void testMultiProject_v8_14_4() throws IOException { + this.testMultiProject("8.14.4"); + } // Test if the generate task succeeds within a multi-project build // and is cacheable diff --git a/monticore-generator/gradle.properties b/monticore-generator/gradle.properties index 797ddb9d9a..74d34d7fb6 100644 --- a/monticore-generator/gradle.properties +++ b/monticore-generator/gradle.properties @@ -10,16 +10,20 @@ showTestOutput=false # versions used version=7.9.0-SNAPSHOT -previous_mc_version =7.8.0 +previous_mc_version=7.8.0 -se_commons_version =7.8.0 -se_gradle_version =7.9.0-SNAPSHOT -antlr_version =4.12.0 -junit_version = 5.14.1 -junit_platform_version = 1.14.1 -cd4a_version =7.8.0 -commons_lang3_version = 3.8.1 -commons_cli_version = 1.4 -freemarker_version = 2.3.28 -guava_version =31.1-jre -shadow_plugin_version=7.1.2 +se_commons_version=7.8.0 +se_gradle_version=7.9.0-SNAPSHOT +antlr_version=4.12.0 +junit_version=5.14.1 +junit_platform_version=1.14.1 +cd4a_version=7.8.0 +commons_lang3_version=3.20.0 +commons_cli_version=1.4 +commons_text_version=1.15.0 +freemarker_version=2.3.28 +guava_version=33.5.0-jre +shadow_plugin_version=8.3.9 +mockito_version=5.22.0 +groovy_version=5.0.4 +spotbugs_annotations_version=4.9.8 diff --git a/monticore-generator/src/main/java/de/monticore/MontiCoreScript.java b/monticore-generator/src/main/java/de/monticore/MontiCoreScript.java index f1deb988b5..5202c8ff3b 100644 --- a/monticore-generator/src/main/java/de/monticore/MontiCoreScript.java +++ b/monticore-generator/src/main/java/de/monticore/MontiCoreScript.java @@ -1484,7 +1484,6 @@ protected void doRun(String script, Configuration configuration) { List mcPaths = new ArrayList<>(); Optional reportsOpt = Optional.empty(); - DelegatingClassLoader groovyClassLoader = new DelegatingClassLoader(this.getClass().getClassLoader()); try { if(config.isPresent()) { MontiCoreConfiguration mcConfig = MontiCoreConfiguration.withConfiguration(config.get()); @@ -1532,9 +1531,6 @@ protected void doRun(String script, Configuration configuration) { // the "force" parameter, which is always true builder.addVariable("force", true); } - // Use a delegating classloader for groovy to reduce - // the impact of JDK-8078641 - builder.withClassLoader(groovyClassLoader); GroovyInterpreter g = builder.build(); g.evaluate(script); @@ -1547,11 +1543,6 @@ protected void doRun(String script, Configuration configuration) { } // Notify the reporters about flushing & closing their file handles reportsOpt.ifPresent(MontiCoreReports::close); - // Clean up after groovy - try { - groovyClassLoader.close(); - } catch (IOException ignored) { - } } } } diff --git a/monticore-grammar/build.gradle b/monticore-grammar/build.gradle index ed8d86f372..3755d3661d 100644 --- a/monticore-grammar/build.gradle +++ b/monticore-grammar/build.gradle @@ -7,7 +7,7 @@ buildscript { plugins { id "java-library" - id "com.github.johnrengelman.shadow" version "$shadow_plugin_version" + id "com.gradleup.shadow" version "$shadow_plugin_version" // in case a "genTR" property is set to "true", transformation grammars are also created id "de.monticore.generator-withtr" // version is defined in the root project id "jacoco" diff --git a/monticore-test/it/build.gradle b/monticore-test/it/build.gradle index 3f6e97adde..8bebf4f7bb 100644 --- a/monticore-test/it/build.gradle +++ b/monticore-test/it/build.gradle @@ -37,8 +37,8 @@ if (!hasProperty('buildProfile')) ext.buildProfile = 'default' // chooses the p apply from: "profile-${buildProfile}.gradle" // includes the corresponding build file tasks.withType(JavaCompile) { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 options.warnings = false options.encoding = 'UTF-8' } @@ -49,7 +49,7 @@ compileJava { java { toolchain { - languageVersion = JavaLanguageVersion.of(11) + languageVersion = JavaLanguageVersion.of(21) } } diff --git a/monticore-test/monticore-grammar-it/build.gradle b/monticore-test/monticore-grammar-it/build.gradle index 90931b8677..bb54b4d4d9 100644 --- a/monticore-test/monticore-grammar-it/build.gradle +++ b/monticore-test/monticore-grammar-it/build.gradle @@ -40,13 +40,13 @@ compileJava { java { toolchain { - languageVersion = JavaLanguageVersion.of(11) + languageVersion = JavaLanguageVersion.of(21) } } tasks.withType(JavaCompile).configureEach { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 options.encoding = 'UTF-8' options.deprecation = false options.warnings = false diff --git a/monticore-test/montitrans/build.gradle b/monticore-test/montitrans/build.gradle index 6cff8c4881..b442b42167 100644 --- a/monticore-test/montitrans/build.gradle +++ b/monticore-test/montitrans/build.gradle @@ -38,7 +38,7 @@ subprojects { java { toolchain { - languageVersion = JavaLanguageVersion.of(11) + languageVersion = JavaLanguageVersion.of(21) } } diff --git a/prepare-next-release/0001-use-next-snapshot.patch b/prepare-next-release/0001-use-next-snapshot.patch index e53739104b..d54df09b87 100644 --- a/prepare-next-release/0001-use-next-snapshot.patch +++ b/prepare-next-release/0001-use-next-snapshot.patch @@ -1,14 +1,14 @@ -From 28259ce5949049ee78bb720c13636850ebca0f1c Mon Sep 17 00:00:00 2001 +From 76cdb326c29133cda5b2766e08e43057a77f8ea2 Mon Sep 17 00:00:00 2001 From: Janik Rapp -Date: Fri, 2 Jan 2026 14:32:48 +0100 -Subject: [PATCH] [PATCH] use next snapshot +Date: Thu, 5 Mar 2026 17:13:03 +0100 +Subject: [PATCH] use next snapshot diff --git a/gradle.properties b/gradle.properties -index 3bc21f46d..26a2df7a3 100644 +index ec4417c1f..3876c086a 100644 --- a/gradle.properties +++ b/gradle.properties -@@ -14,11 +14,11 @@ org.gradle.caching=true +@@ -17,11 +17,11 @@ org.gradle.caching=true # org.gradle.caching.debug=true # versions used @@ -23,36 +23,36 @@ index 3bc21f46d..26a2df7a3 100644 antlr_version =4.12.0 junit_version = 5.14.1 junit_platform_version = 1.14.1 -@@ -29,4 +29,4 @@ freemarker_version = 2.3.34 +@@ -32,4 +32,4 @@ freemarker_version = 2.3.34 guava_version =31.1-jre - shadow_plugin_version=7.1.2 + shadow_plugin_version=8.3.9 -cd4a_version =7.8.0 +cd4a_version =7.9.0-SNAPSHOT diff --git a/monticore-generator/gradle.properties b/monticore-generator/gradle.properties -index a4171758b..5249f4006 100644 +index 74d34d7fb..cd1f65f6b 100644 --- a/monticore-generator/gradle.properties +++ b/monticore-generator/gradle.properties -@@ -9,14 +9,14 @@ useLocalRepo=false +@@ -9,15 +9,15 @@ useLocalRepo=false showTestOutput=false # versions used -version=7.9.0-SNAPSHOT --previous_mc_version =7.8.0 +-previous_mc_version=7.8.0 +version=7.10.0-SNAPSHOT -+previous_mc_version =7.9.0-SNAPSHOT ++previous_mc_version=7.9.0-SNAPSHOT --se_commons_version =7.8.0 -+se_commons_version =7.9.0-SNAPSHOT - se_gradle_version =7.9.0-SNAPSHOT - antlr_version =4.12.0 - junit_version = 5.14.1 - junit_platform_version = 1.14.1 --cd4a_version =7.8.0 -+cd4a_version =7.9.0-SNAPSHOT - commons_lang3_version = 3.8.1 - commons_cli_version = 1.4 - freemarker_version = 2.3.28 +-se_commons_version=7.8.0 ++se_commons_version=7.9.0-SNAPSHOT + se_gradle_version=7.9.0-SNAPSHOT + antlr_version=4.12.0 + junit_version=5.14.1 + junit_platform_version=1.14.1 +-cd4a_version=7.8.0 ++cd4a_version=7.9.0-SNAPSHOT + commons_lang3_version=3.20.0 + commons_cli_version=1.4 + commons_text_version=1.15.0 -- 2.47.1.windows.1