This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new c0bc2d3fb9 move `useJUnitPlatform()` to the `org.apache.groovy-tested`
plugin
c0bc2d3fb9 is described below
commit c0bc2d3fb92ac104326a1564796a6bc9a775ca50
Author: Eric Milles <[email protected]>
AuthorDate: Sat Mar 15 10:27:00 2025 -0500
move `useJUnitPlatform()` to the `org.apache.groovy-tested` plugin
---
.../groovy/org.apache.groovy-performance.gradle | 10 ++--
.../main/groovy/org.apache.groovy-tested.gradle | 55 ++++++++++++--------
build.gradle | 58 +++++++++++-----------
src/test/groovy/bugs/Groovy11182.groovy | 2 +-
subprojects/groovy-contracts/build.gradle | 7 +--
subprojects/groovy-nio/build.gradle | 3 --
subprojects/groovy-templates/build.gradle | 6 ---
subprojects/groovy-test-junit5/build.gradle | 28 +++++------
.../src/test/groovy/JUnit5Test.groovy | 2 +-
subprojects/groovy-xml/build.gradle | 6 ---
subprojects/groovy-yaml/build.gradle | 2 +-
versions.properties | 23 ++++-----
12 files changed, 97 insertions(+), 105 deletions(-)
diff --git a/build-logic/src/main/groovy/org.apache.groovy-performance.gradle
b/build-logic/src/main/groovy/org.apache.groovy-performance.gradle
index ab05db6baf..3aaa333df8 100644
--- a/build-logic/src/main/groovy/org.apache.groovy-performance.gradle
+++ b/build-logic/src/main/groovy/org.apache.groovy-performance.gradle
@@ -27,7 +27,7 @@ plugins {
id 'me.champeau.jmh'
}
-project.extensions.create("performanceTests", PerformanceTestsExtension,
objects, tasks, configurations, dependencies, sourceSets)
+project.extensions.create('performanceTests', PerformanceTestsExtension,
objects, tasks, configurations, dependencies, sourceSets)
configurations {
stats
@@ -42,8 +42,8 @@ repositories {
}
dependencies {
- jmh project(":")
- testImplementation project(":")
+ jmh project(':')
+ testImplementation project(':')
testImplementation "junit:junit:${versions.junit}"
stats "org.apache.commons:commons-math3:${versions.commonsMath3}"
}
@@ -71,11 +71,11 @@ tasks.named('compileJmhGroovy') {
tasks.register('displayJmhResults') {
doLast {
- println
layout.buildDirectory.file("results/jmh/results.txt").get().asFile.text
+ println
layout.buildDirectory.file('results/jmh/results.txt').get().asFile.text
}
}
-tasks.register("performanceTests", PerformanceTestSummary)
+tasks.register('performanceTests', PerformanceTestSummary)
sonarqube {
skipProject = true
diff --git a/build-logic/src/main/groovy/org.apache.groovy-tested.gradle
b/build-logic/src/main/groovy/org.apache.groovy-tested.gradle
index 7ec0b5aea7..df82b64100 100644
--- a/build-logic/src/main/groovy/org.apache.groovy-tested.gradle
+++ b/build-logic/src/main/groovy/org.apache.groovy-tested.gradle
@@ -16,11 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
+
import org.apache.groovy.gradle.ConcurrentExecutionControlBuildService
-import javax.inject.Inject
-// Instead of adding to the test sources, this should
-// be a separate source set so that we can run spec tests in isolation
+// TODO: Instead of adding to the test sources, these should be a
+// separate source set so that we can run spec tests in isolation
sourceSets {
test {
groovy {
@@ -32,11 +32,20 @@ sourceSets {
}
}
+dependencies {
+ testCompileOnly "junit:junit:${versions.junit}"
+ testImplementation "org.junit.jupiter:junit-jupiter:${versions.junit5}"
+ testRuntimeOnly "org.junit.vintage:junit-vintage-engine:${versions.junit5}"
+ testRuntimeOnly
"org.junit.platform:junit-platform-launcher:${versions.junit5Platform}", {
+ exclude group: 'org.apiguardian', module: 'apiguardian-api'
+ }
+}
+
tasks.withType(Test).configureEach {
def fs = objects.newInstance(TestServices).fileSystemOperations
def grapeDirectory = new File(temporaryDir, 'grape')
def jdk8 = ['-XX:+UseConcMarkSweepGC']
- def jdk9 = ['-Djava.locale.providers=COMPAT,SPI'/*,
'--illegal-access=debug'*/]
+ def jdk9 = ['-Djava.locale.providers=COMPAT,SPI']
def common = ['-ea', "-Xms${groovyJUnit_ms}", "-Xmx${groovyJUnit_mx}",
'-Duser.language=en']
if (JavaVersion.current().isJava9Compatible()) {
jvmArgs(*common, *jdk9)
@@ -44,17 +53,21 @@ tasks.withType(Test).configureEach {
} else {
jvmArgs(*common, *jdk8)
}
+ def testdb = System.properties['groovy.testdb.props']
+ if (testdb) {
+ systemProperty 'groovy.testdb.props', testdb
+ }
def headless = System.properties['java.awt.headless']
if (headless == 'true') {
- systemProperties 'java.awt.headless': 'true'
+ systemProperty 'java.awt.headless', 'true'
}
- systemProperties 'apple.awt.UIElement': 'true',
- 'javadocAssertion.src.dir': './src/main'
+ systemProperty 'apple.awt.UIElement', 'true'
+ systemProperty 'javadocAssertion.src.dir', './src/main'
jvmArgumentProviders.add(new TestCommandLineArgumentProvider(
- grapeRoot: grapeDirectory,
- gradleHome: gradle.gradleHomeDir, // this is needed by the
security.policy
- userHome: temporaryDir // make sure tests are isolated from real
user home or tests using Grape may fail
+ grapeRoot: grapeDirectory,
+ gradleHome: gradle.gradleHomeDir, // this is needed by the
security.policy
+ userHome: temporaryDir // make sure tests are isolated from real user
home or tests using Grape may fail
))
if (rootProject.hasProperty('target.java.home')) {
@@ -66,29 +79,29 @@ tasks.withType(Test).configureEach {
}
forkEvery = 50
- maxParallelForks = sharedConfiguration.isRunningOnCI ? 1 :
Runtime.runtime.availableProcessors().intdiv(2) ?: 1
+ maxParallelForks = sharedConfiguration.isRunningOnCI ? 1 :
(Runtime.runtime.availableProcessors().intdiv(2) ?: 1)
scanForTestClasses = true
ignoreFailures = false
+ classpath = files('src/test') + classpath
+ exclude buildExcludeFilter(it.name == 'test')
+ ext.resultText = ''
+
testLogging {
exceptionFormat = 'full'
- // uncomment the following line if you need more logging
- // events "failed", "started"
- }
- def testdb = System.properties['groovy.testdb.props']
- if (testdb) {
- systemProperties 'groovy.testdb.props': testdb
+ events 'FAILED'
+ info.events 'FAILED', 'PASSED', 'SKIPPED'
}
- classpath = files('src/test') + classpath
- exclude buildExcludeFilter(it.name == 'test')
- ext.resultText = ''
+ useJUnitPlatform()
usesService(ConcurrentExecutionControlBuildService.restrict(Test, gradle,
2))
+
doFirst {
fs.delete {
// delete if it exists already to be in a clean state
delete(grapeDirectory)
}
}
+
doLast {
fs.delete {
delete(files(".").filter { it.name.endsWith '.class' })
@@ -137,6 +150,6 @@ Closure buildExcludeFilter(boolean legacyTestSuite) {
}
interface TestServices {
- @Inject
+ @javax.inject.Inject
FileSystemOperations getFileSystemOperations()
}
diff --git a/build.gradle b/build.gradle
index b6fcd9fd57..7dcc927619 100644
--- a/build.gradle
+++ b/build.gradle
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
plugins {
id 'me.champeau.buildscan-recipes' version '0.2.3'
id 'com.github.ben-manes.versions' version '0.52.0'
@@ -28,8 +29,8 @@ plugins {
}
buildScanRecipes {
- recipe 'git-commit', baseUrl: 'https://github.com/apache/groovy/tree'
recipe 'teamcity', baseUrl: 'https://ci.groovy-lang.org', guest: 'true'
+ recipe 'git-commit', baseUrl: 'https://github.com/apache/groovy/tree'
recipes 'git-status', 'gc-stats', 'teamcity', 'travis-ci'
}
@@ -108,10 +109,10 @@ dependencies {
loggingImplementation "org.fusesource.jansi:jansi:${versions.jansi}"
xstreamAstImplementation
"com.thoughtworks.xstream:xstream:${versions.xstream}", {
- exclude(group: 'xpp3' , module: 'xpp3_min')
- exclude(group: 'junit' , module: 'junit' )
- exclude(group: 'jmock' , module: 'jmock' )
- exclude(group: 'xmlpull', module: 'xmlpull' )
+ exclude group: 'jmock' , module: 'jmock'
+ exclude group: 'junit' , module: 'junit'
+ exclude group: 'xmlpull', module: 'xmlpull'
+ exclude group: 'xpp3' , module: 'xpp3_min'
}
testImplementation projects.groovyAnt
@@ -126,22 +127,23 @@ dependencies {
testImplementation "org.apache.logging.log4j:log4j-core:${versions.log4j2}"
testImplementation "org.slf4j:jcl-over-slf4j:${versions.slf4j}"
testImplementation "com.thoughtworks.qdox:qdox:${versions.qdox}"
- testImplementation
"com.fasterxml.jackson.core:jackson-databind:${versions.jacksonDatabind}"
+ testImplementation
"com.fasterxml.jackson.core:jackson-databind:${versions.jackson}"
testImplementation
"com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${versions.jackson}"
- testImplementation
"com.fasterxml.jackson.core:jackson-annotations:${versions.jackson}"
testFixturesImplementation projects.groovyXml
testFixturesImplementation projects.groovyTest
testFixturesImplementation "xmlunit:xmlunit:${versions.xmlunit}"
tools "com.eed3si9n.jarjar:ant-jarjar:${versions.jarjar}"
- tools "org.apache.ant:ant:${versions.ant}" // use latest ant
+ tools "org.apache.ant:ant:${versions.ant}"
tools "org.jboss.bridger:bridger:${versions.bridger}"
- tools "org.codehaus.plexus:plexus-utils:4.0.2" // updated bridger
dependency to remove vulnerability
- tools "org.apache.maven:maven-core:3.9.9" // updated bridger dependency to
remove vulnerability
- tools "com.jcraft:jsch:0.1.55" // updated bridger dependency to remove
vulnerability
- tools "commons-io:commons-io:2.18.0" // updated bridger dependency to
remove vulnerability
- tools "org.apache.maven.shared:maven-shared-utils:3.4.2" // updated
bridger dependency to remove vulnerability
+ // updated bridger dependencies to remove vulnerabilities:
+ tools "com.jcraft:jsch:0.1.55"
+ tools "commons-io:commons-io:2.18.0"
+ tools "org.apache.maven:maven-core:3.9.9"
+ tools "org.apache.maven.shared:maven-shared-utils:3.4.2"
+ tools "org.codehaus.plexus:plexus-utils:4.0.2"
+ // end
tools "org.ow2.asm:asm:${versions.asm}"
tools "com.thoughtworks.qdox:qdox:${versions.qdox}"
@@ -199,24 +201,24 @@ tasks.named('jar') {
// by the Apache policy, so we need to build them and add them to the test
// resources classpath
-def extModuleFixtureDir =
project.layout.projectDirectory.dir("src/test-fixtures/extmodule")
-def extModuleOutputDir =
project.layout.buildDirectory.dir("testFixtures/extmodule")
-def extModuleRepoDir = extModuleOutputDir.map { it.dir("repo") }
+def extModuleFixtureDir =
project.layout.projectDirectory.dir('src/test-fixtures/extmodule')
+def extModuleOutputDir =
project.layout.buildDirectory.dir('testFixtures/extmodule')
+def extModuleRepoDir = extModuleOutputDir.map { it.dir('repo') }
-def compileTestExtensionModule = tasks.register("compileTestExtensionModule",
JavaCompile) {
+def compileTestExtensionModule = tasks.register('compileTestExtensionModule',
JavaCompile) {
classpath = files(tasks.named('jar'))
- source fileTree(extModuleFixtureDir.dir("src/main/java"))
- destinationDirectory = extModuleOutputDir.map { it.dir("classes") }
+ source fileTree(extModuleFixtureDir.dir('src/main/java'))
+ destinationDirectory = extModuleOutputDir.map { it.dir('classes') }
sourceCompatibility = sharedConfiguration.targetJavaVersion.get()
targetCompatibility = sharedConfiguration.targetJavaVersion.get()
}
-def testExtensionModuleJar = tasks.register("testExtensionModuleJar", Jar) {
+def testExtensionModuleJar = tasks.register('testExtensionModuleJar', Jar) {
description = 'Builds a sample extension module used in tests'
archiveBaseName = 'module-test'
archiveVersion = '1.4'
from compileTestExtensionModule
- from extModuleFixtureDir.dir("src/main/resources")
+ from extModuleFixtureDir.dir('src/main/resources')
// emulate Maven repo format for output
destinationDirectory = extModuleRepoDir.map {
it.dir("jars/module-test/module-test/${archiveVersion.get()}") }
}
@@ -258,18 +260,18 @@ licenseReport {
sonarqube {
properties {
- property "sonar.projectName", "Apache Groovy"
- property "sonar.projectKey", "apache_groovy"
- property "sonar.organization", "apache"
- property "sonar.host.url", "https://sonarcloud.io"
- property "sonar.cpd.exclusions", "**/*"
-// property "sonar.coverage.jacoco.xmlReportPaths",
layout.buildDirectory.file("reports/jacoco/jacocoAllReport/jacocoAllReport.xml").get().asFile.absolutePath
+ property 'sonar.projectName', 'Apache Groovy'
+ property 'sonar.projectKey', 'apache_groovy'
+ property 'sonar.organization', 'apache'
+ property 'sonar.host.url', 'https://sonarcloud.io'
+ property 'sonar.cpd.exclusions', '**/*'
+// property 'sonar.coverage.jacoco.xmlReportPaths',
layout.buildDirectory.file('reports/jacoco/jacocoAllReport/jacocoAllReport.xml').get().asFile.absolutePath
}
}
def UNSTABLE =
/^([\d.-]+(alpha|beta|rc|m)[\d.-]+(groovy[\d.-]+)?|20030203.000550|20031129.200437|200404\d\d|2004-03-19)$/
// ignore non-stable releases
-tasks.named("dependencyUpdates")?.configure {
+tasks.named('dependencyUpdates')?.configure {
gradleReleaseChannel = 'current'
rejectVersionIf {
!(it.currentVersion.toLowerCase() ==~ UNSTABLE) &&
it.candidate.version.toLowerCase() ==~ UNSTABLE
diff --git a/src/test/groovy/bugs/Groovy11182.groovy
b/src/test/groovy/bugs/Groovy11182.groovy
index 5ab15e05fc..a26163354d 100644
--- a/src/test/groovy/bugs/Groovy11182.groovy
+++ b/src/test/groovy/bugs/Groovy11182.groovy
@@ -18,7 +18,7 @@
*/
package groovy.bugs
-import org.junit.Test
+import org.junit.jupiter.api.Test
import static groovy.test.GroovyAssert.assertScript
diff --git a/subprojects/groovy-contracts/build.gradle
b/subprojects/groovy-contracts/build.gradle
index 8c221635a1..292b1863fa 100644
--- a/subprojects/groovy-contracts/build.gradle
+++ b/subprojects/groovy-contracts/build.gradle
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
plugins {
id 'org.apache.groovy-library'
}
@@ -25,13 +26,9 @@ dependencies {
testImplementation projects.groovyTest
testImplementation projects.groovyTemplates
- testImplementation("org.spockframework:spock-junit4:${versions.spock}") {
+ testImplementation "org.spockframework:spock-junit4:${versions.spock}", {
exclude group: 'org.codehaus.groovy'
}
-
testRuntimeOnly("org.junit.vintage:junit-vintage-engine:${versions.junit5}")
-
testRuntimeOnly("org.junit.platform:junit-platform-launcher:${versions.junit5Platform}")
{
- exclude(group: 'org.apiguardian', module: 'apiguardian-api')
- }
}
tasks.named('test') {
diff --git a/subprojects/groovy-nio/build.gradle
b/subprojects/groovy-nio/build.gradle
index 1a00650fdb..dadbb719ee 100644
--- a/subprojects/groovy-nio/build.gradle
+++ b/subprojects/groovy-nio/build.gradle
@@ -27,9 +27,6 @@ dependencies {
testImplementation("org.spockframework:spock-core:${versions.spock}") {
exclude group: 'org.codehaus.groovy'
}
-
testRuntimeOnly("org.junit.platform:junit-platform-launcher:${versions.junit5Platform}")
{
- exclude(group: 'org.apiguardian', module: 'apiguardian-api')
- }
}
groovyLibrary {
diff --git a/subprojects/groovy-templates/build.gradle
b/subprojects/groovy-templates/build.gradle
index d74f8e8e25..2440adc064 100644
--- a/subprojects/groovy-templates/build.gradle
+++ b/subprojects/groovy-templates/build.gradle
@@ -27,12 +27,6 @@ dependencies {
testImplementation ("org.spockframework:spock-core:${versions.spock}") {
exclude group: 'org.codehaus.groovy'
}
-
testRuntimeOnly("org.junit.vintage:junit-vintage-engine:${versions.junit5}") {
- because 'for JUnit 3/4 tests as well as JUnit 5'
- }
-
testRuntimeOnly("org.junit.platform:junit-platform-launcher:${versions.junit5Platform}")
{
- exclude(group: 'org.apiguardian', module: 'apiguardian-api')
- }
}
tasks.named('test') {
diff --git a/subprojects/groovy-test-junit5/build.gradle
b/subprojects/groovy-test-junit5/build.gradle
index 8adc5df69d..5bdc1c3e16 100644
--- a/subprojects/groovy-test-junit5/build.gradle
+++ b/subprojects/groovy-test-junit5/build.gradle
@@ -16,30 +16,26 @@
* specific language governing permissions and limitations
* under the License.
*/
+
plugins {
id 'org.apache.groovy-library'
}
dependencies {
api rootProject // JUnit5Runner implements GroovyRunner...
- api("org.junit.jupiter:junit-jupiter-api:${versions.junit5}") {
- exclude(group: 'org.apiguardian', module: 'apiguardian-api')
- exclude(group: 'org.junit.platform', module: 'junit-platform-commons')
+ api "org.junit.jupiter:junit-jupiter-api:${versions.junit5}", {
+ exclude group: 'org.apiguardian', module: 'apiguardian-api'
+ exclude group: 'org.junit.platform', module: 'junit-platform-commons'
}
-
implementation("org.junit.platform:junit-platform-launcher:${versions.junit5Platform}")
{
- exclude(group: 'org.apiguardian', module: 'apiguardian-api')
+ implementation
"org.junit.jupiter:junit-jupiter-engine:${versions.junit5}", {
+ exclude group: 'org.apiguardian', module: 'apiguardian-api'
}
-
implementation("org.junit.jupiter:junit-jupiter-engine:${versions.junit5}") {
- exclude(group: 'org.apiguardian', module: 'apiguardian-api')
+ implementation
"org.junit.platform:junit-platform-launcher:${versions.junit5Platform}", {
+ exclude group: 'org.apiguardian', module: 'apiguardian-api'
}
- testImplementation
"org.junit.jupiter:junit-jupiter-params:${versions.junit5}"
- testImplementation "net.jqwik:jqwik-api:${versions.jqwik}"
- testRuntimeOnly
"org.junit.platform:junit-platform-engine:${versions.junit5Platform}"
- testRuntimeOnly
"org.junit.platform:junit-platform-runner:${versions.junit5Platform}"
- testRuntimeOnly "net.jqwik:jqwik-engine:${versions.jqwik}"
testImplementation projects.groovyTest
-}
-
-tasks.named('test') {
- useJUnitPlatform()
+ testImplementation "net.jqwik:jqwik-api:${versions.jqwik}"
+ testRuntimeOnly "net.jqwik:jqwik-engine:${versions.jqwik}"
+ testImplementation
"org.junit.jupiter:junit-jupiter-params:${versions.junit5}"
+ testRuntimeOnly
"org.junit.platform:junit-platform-runner:${versions.junit5Platform}"
}
diff --git a/subprojects/groovy-test-junit5/src/test/groovy/JUnit5Test.groovy
b/subprojects/groovy-test-junit5/src/test/groovy/JUnit5Test.groovy
index 3faa738ba9..4281175302 100644
--- a/subprojects/groovy-test-junit5/src/test/groovy/JUnit5Test.groovy
+++ b/subprojects/groovy-test-junit5/src/test/groovy/JUnit5Test.groovy
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-//@Grab('org.junit.jupiter:junit-jupiter-params:5.2.0')
+
import org.junit.jupiter.api.*
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.ValueSource
diff --git a/subprojects/groovy-xml/build.gradle
b/subprojects/groovy-xml/build.gradle
index be3daf7eaf..facfc7d69f 100644
--- a/subprojects/groovy-xml/build.gradle
+++ b/subprojects/groovy-xml/build.gradle
@@ -36,12 +36,6 @@ dependencies {
requireCapability 'org.apache.groovy:groovy-grapes'
}
}
-
testRuntimeOnly("org.junit.vintage:junit-vintage-engine:${versions.junit5}") {
- because 'for JUnit 3/4 tests as well as JUnit 5'
- }
-
testRuntimeOnly("org.junit.platform:junit-platform-launcher:${versions.junit5Platform}")
{
- exclude(group: 'org.apiguardian', module: 'apiguardian-api')
- }
}
plugins.withId('eclipse') {
diff --git a/subprojects/groovy-yaml/build.gradle
b/subprojects/groovy-yaml/build.gradle
index 2e18115e20..01daa16704 100644
--- a/subprojects/groovy-yaml/build.gradle
+++ b/subprojects/groovy-yaml/build.gradle
@@ -23,7 +23,7 @@ plugins {
dependencies {
api rootProject // YamlBuilder extends GroovyObjectSupport...
implementation
"com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${versions.jackson}"
- implementation
"com.fasterxml.jackson.core:jackson-databind:${versions.jacksonDatabind}"
+ implementation
"com.fasterxml.jackson.core:jackson-databind:${versions.jackson}"
implementation projects.groovyJson
testImplementation projects.groovyTest
testRuntimeOnly
"com.fasterxml.jackson.core:jackson-annotations:${versions.jackson}"
diff --git a/versions.properties b/versions.properties
index 999291d640..237e995679 100644
--- a/versions.properties
+++ b/versions.properties
@@ -14,28 +14,31 @@
# limitations under the License.
ant=1.10.15
-asciidoctorj=2.5.11
+antlr4=4.13.2.6
# later asciidoctorDiagram versions seem to break some diagrams
asciidoctorDiagram=2.2.17
-asciidoctorPdf=2.3.19
asciidoctorGroovyDsl=2.0.2
+asciidoctorPdf=2.3.19
+asciidoctorj=2.5.11
asm=9.7.1
-antlr4=4.13.2.6
bridger=1.6.Final
checkstyle=10.21.1
-codenarc=3.5.0-groovy-4.0
cobertura=1.9.4.1
+codenarc=3.5.0-groovy-4.0
commonsCli=1.9.0
commonsMath3=3.6.1
gpars=1.2.1
ivy=2.5.3
-jansi=2.4.1
-jacksonDatabind=2.18.2
jackson=2.18.2
+jakartaServerPagesApi=3.1.1
+jakartaServletApi=6.0.0
+jansi=2.4.1
jarjar=1.14.1
javaParser=3.26.3
+jcipAnnotations=1.0
jline=2.14.6
jmh=1.37
+jqwik=1.9.2
jruby=9.2.17.0
junit=4.13.2
junit5=5.12.0
@@ -47,13 +50,9 @@ openbeans=1.0.2
picocli=4.7.6
qdox=2.2.0
slf4j=2.0.16
-xmlunit=1.6
-xstream=1.4.21
# running with Groovy 5 can be allowed with
-Dspock.iKnowWhatImDoing.disableGroovyVersionCheck=true
spock=2.3-groovy-4.0
spotbugs=4.9.0
-jcipAnnotations=1.0
treelayout=1.0.3
-jakartaServletApi=6.0.0
-jakartaServerPagesApi=3.1.1
-jqwik=1.9.2
+xmlunit=1.6
+xstream=1.4.21