aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/java-application.gradle.kts5
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/java-conventions.gradle.kts15
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/jmh.gradle.kts3
-rw-r--r--buildSrc/src/main/kotlin/tools/refinery/gradle/mwe2.gradle.kts6
-rw-r--r--gradle/libs.versions.toml89
-rw-r--r--subprojects/gradle-plugins/src/main/java/tools/refinery/gradle/plugins/RefineryJavaPlugin.java18
-rw-r--r--subprojects/gradle-plugins/src/main/java/tools/refinery/gradle/plugins/internal/RefineryPluginUtils.java6
-rw-r--r--subprojects/versions/build.gradle.kts2
8 files changed, 111 insertions, 33 deletions
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/java-application.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-application.gradle.kts
index 68a44f47..469ebf59 100644
--- a/buildSrc/src/main/kotlin/tools/refinery/gradle/java-application.gradle.kts
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-application.gradle.kts
@@ -12,11 +12,6 @@ plugins {
12 id("tools.refinery.gradle.java-conventions") 12 id("tools.refinery.gradle.java-conventions")
13} 13}
14 14
15// Use log4j-over-slf4j instead of log4j 1.x when running the application.
16configurations.runtimeClasspath {
17 exclude(group = "log4j", module = "log4j")
18}
19
20val libs = the<LibrariesForLibs>() 15val libs = the<LibrariesForLibs>()
21 16
22dependencies { 17dependencies {
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/java-conventions.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-conventions.gradle.kts
index db0c87c5..620543a3 100644
--- a/buildSrc/src/main/kotlin/tools/refinery/gradle/java-conventions.gradle.kts
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-conventions.gradle.kts
@@ -18,26 +18,29 @@ repositories {
18 mavenCentral() 18 mavenCentral()
19} 19}
20 20
21// Use log4j-over-slf4j instead of log4j 1.x in the tests. 21configurations.withType(Configuration::class) {
22configurations.testRuntimeClasspath { 22 if (name.endsWith("Classpath")) {
23 exclude(group = "log4j", module = "log4j") 23 exclude(group = "log4j", module = "log4j")
24 exclude(group = "ch.qos.reload4j", module = "reload4j")
25 }
24} 26}
25 27
26val libs = the<LibrariesForLibs>() 28val libs = the<LibrariesForLibs>()
27 29
28dependencies { 30dependencies {
29 compileOnly(libs.jetbrainsAnnotations) 31 compileOnly(libs.jetbrainsAnnotations)
32 compileOnly(libs.slf4j.log4j)
30 testCompileOnly(libs.jetbrainsAnnotations) 33 testCompileOnly(libs.jetbrainsAnnotations)
31 testImplementation(libs.hamcrest) 34 testImplementation(libs.hamcrest)
32 testImplementation(libs.junit.api) 35 testImplementation(libs.junit.api)
33 testImplementation(enforcedPlatform(libs.junit.bom)) 36 testImplementation(enforcedPlatform(project(":refinery-bom-dependencies")))
34 testRuntimeOnly(libs.junit.engine) 37 testRuntimeOnly(libs.junit.engine)
35 testRuntimeOnly(libs.junit.launcher) 38 testRuntimeOnly(libs.junit.launcher)
39 testRuntimeOnly(libs.slf4j.simple)
36 testImplementation(libs.junit.params) 40 testImplementation(libs.junit.params)
37 testImplementation(libs.mockito.core) 41 testImplementation(libs.mockito.core)
38 testImplementation(libs.mockito.junit) 42 testImplementation(libs.mockito.junit)
39 testImplementation(libs.slf4j.simple) 43 testImplementation(libs.slf4j.log4j)
40 testRuntimeOnly(libs.slf4j.log4j)
41} 44}
42 45
43java { 46java {
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/jmh.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/jmh.gradle.kts
index fbbbba11..5dde7033 100644
--- a/buildSrc/src/main/kotlin/tools/refinery/gradle/jmh.gradle.kts
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/jmh.gradle.kts
@@ -35,7 +35,10 @@ configurations["jmhRuntimeOnly"].extendsFrom(configurations.runtimeOnly.get(), c
35val libs = the<LibrariesForLibs>() 35val libs = the<LibrariesForLibs>()
36 36
37dependencies { 37dependencies {
38 jmhImplementation(enforcedPlatform(project(":refinery-bom-dependencies")))
38 jmhImplementation(libs.jmh.core) 39 jmhImplementation(libs.jmh.core)
40 jmhImplementation(libs.slf4j.log4j)
41 jmhImplementation(libs.slf4j.simple)
39 jmhAnnotationProcessor(libs.jmh.annprocess) 42 jmhAnnotationProcessor(libs.jmh.annprocess)
40} 43}
41 44
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/mwe2.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/mwe2.gradle.kts
index 91251b45..c20adb85 100644
--- a/buildSrc/src/main/kotlin/tools/refinery/gradle/mwe2.gradle.kts
+++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/mwe2.gradle.kts
@@ -15,15 +15,19 @@ val mwe2: Configuration by configurations.creating {
15 isCanBeConsumed = false 15 isCanBeConsumed = false
16 isCanBeResolved = true 16 isCanBeResolved = true
17 extendsFrom(configurations.implementation.get()) 17 extendsFrom(configurations.implementation.get())
18 // Exclude also here, because the name of this configuration doesn't end with {@code Classpath},
19 // so it isn't caught by {@code tools.refinery.gradle.java-conventions}.
18 exclude(group = "log4j", module = "log4j") 20 exclude(group = "log4j", module = "log4j")
21 exclude(group = "ch.qos.reload4j", module = "reload4j")
19} 22}
20 23
21val libs = the<LibrariesForLibs>() 24val libs = the<LibrariesForLibs>()
22 25
23dependencies { 26dependencies {
27 mwe2(enforcedPlatform(project(":refinery-bom-dependencies")))
24 mwe2(libs.mwe2.launch) 28 mwe2(libs.mwe2.launch)
25 mwe2(libs.slf4j.simple)
26 mwe2(libs.slf4j.log4j) 29 mwe2(libs.slf4j.log4j)
30 mwe2(libs.slf4j.simple)
27} 31}
28 32
29eclipse.classpath.plusConfigurations += mwe2 33eclipse.classpath.plusConfigurations += mwe2
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index f57f4597..3ef535e7 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -3,35 +3,99 @@
3# SPDX-License-Identifier: EPL-2.0 3# SPDX-License-Identifier: EPL-2.0
4 4
5[versions] 5[versions]
6antlr = "3.2" # To retain Xtext compatibility, this mustn't be increased
7apiguardian = "1.1.2"
8asm = "9.7"
9classgraph = "4.8.174"
10eclipse-commands = "3.12.100"
11eclipse-contenttype = "3.9.400"
12eclipse-debug = "3.21.400"
13eclipse-filesystem = "1.10.400"
14eclipse-jobs = "3.15.300"
15eclipse-osgi = "3.20.0"
16eclipse-resources = "3.20.200"
17eclipse-runtime = "3.31.100"
18eclipse-text = "3.14.100"
19eclipse-variables = "3.6.400"
6eclipseCollections = "11.1.0" 20eclipseCollections = "11.1.0"
7ecore = "2.36.0" 21ecore = "2.36.0"
8ecoreCodegen = "2.38.0" 22ecore-change = "2.16.0"
9ecoreXmi = "2.37.0" 23ecore-codegen = "2.38.0"
24ecore-xmi = "2.37.0"
25emf-codegen = "2.23.0"
26emf-common = "2.30.0"
27equinox-common = "3.19.100"
28equinox-preferences = "3.11.100"
29equinox-registry = "3.12.100"
30errorprone = "2.28.0"
31findbugs = "3.0.2"
32guava = "33.2.1-jre"
33guice = "7.0.0"
10gson = "2.11.0" 34gson = "2.11.0"
11hamcrest = "2.2" 35hamcrest = "2.2"
36jakartaInject = "2.0.1"
12jcommander = "1.83" 37jcommander = "1.83"
38jdt-core = "3.38.0"
39jdt-debug = "3.21.400"
40jdt-launching = "3.22.0"
13jetbrainsAnnotations = "24.1.0" 41jetbrainsAnnotations = "24.1.0"
14jetty = "12.0.11" 42jetty = "12.0.11"
15jmh = "1.37" 43jmh = "1.37"
44jna = "5.14.0"
16junit = "5.10.3" 45junit = "5.10.3"
46lsp4j = "0.23.1"
17mockito = "5.12.0" 47mockito = "5.12.0"
18mwe = "1.12.0" 48mwe = "1.12.0"
19mwe2 = "2.18.0" 49mwe2 = "2.18.0"
50opentest4j = "1.3.0"
20ortools = "9.10.4067" 51ortools = "9.10.4067"
21refineryZ3 = "4.12.6" 52protobuf = "4.27.2"
53refinery-z3 = "4.12.6"
22slf4j = "2.0.13" 54slf4j = "2.0.13"
23xtext = "2.35.0" 55xtext = "2.35.0"
24xtextAntlrGenerator = "2.1.1" 56xtext-generator-antlr = "2.1.1"
25 57
26[libraries] 58[libraries]
59antlr = { group = "org.antlr", name = "antlr-runtime", version.ref = "antlr" }
60apiguardian = { group = "org.apiguardian", name = "apiguardian-api", version.ref = "apiguardian" }
61asm = { group = "org.ow2.asm", name = "asm", version.ref = "asm" }
62asm-commons = { group = "org.ow2.asm", name = "asm-commons", version.ref = "asm" }
63asm-tree = { group = "org.ow2.asm", name = "asm-tree", version.ref = "asm" }
64classgraph = { group = "io.github.classgraph", name = "classgraph", version.ref = "classgraph" }
65eclipse-commands = { group = "org.eclipse.platform", name = "org.eclipse.core.commands", version.ref = "eclipse-commands" }
66eclipse-contenttype = { group = "org.eclipse.platform", name = "org.eclipse.core.contenttype", version.ref = "eclipse-contenttype" }
67eclipse-debug = { group = "org.eclipse.platform", name = "org.eclipse.debug.core", version.ref = "eclipse-debug" }
68eclipse-expressions = { group = "org.eclipse.platform", name = "org.eclipse.core.expressions", version.ref = "eclipse-contenttype" }
69eclipse-filesystem = { group = "org.eclipse.platform", name = "org.eclipse.core.filesystem", version.ref = "eclipse-filesystem" }
70eclipse-jobs = { group = "org.eclipse.platform", name = "org.eclipse.core.jobs", version.ref = "eclipse-jobs" }
71eclipse-osgi = { group = "org.eclipse.platform", name = "org.eclipse.osgi", version.ref = "eclipse-osgi" }
72eclipse-resources = { group = "org.eclipse.platform", name = "org.eclipse.core.resources", version.ref = "eclipse-resources" }
73eclipse-runtime = { group = "org.eclipse.platform", name = "org.eclipse.core.runtime", version.ref = "eclipse-runtime" }
74eclipse-text = { group = "org.eclipse.platform", name = "org.eclipse.text", version.ref = "eclipse-text" }
75eclipse-variables = { group = "org.eclipse.platform", name = "org.eclipse.core.variables", version.ref = "eclipse-variables" }
27eclipseCollections = { group = "org.eclipse.collections", name = "eclipse-collections-api", version.ref = "eclipseCollections" } 76eclipseCollections = { group = "org.eclipse.collections", name = "eclipse-collections-api", version.ref = "eclipseCollections" }
28eclipseCollections-impl = { group = "org.eclipse.collections", name = "eclipse-collections", version.ref = "eclipseCollections" } 77eclipseCollections-impl = { group = "org.eclipse.collections", name = "eclipse-collections", version.ref = "eclipseCollections" }
29ecore = { group = "org.eclipse.emf", name = "org.eclipse.emf.ecore", version.ref = "ecore" } 78ecore = { group = "org.eclipse.emf", name = "org.eclipse.emf.ecore", version.ref = "ecore" }
30ecore-codegen = { group = "org.eclipse.emf", name = "org.eclipse.emf.codegen.ecore", version.ref = "ecoreCodegen" } 79ecore-change = { group = "org.eclipse.emf", name = "org.eclipse.emf.ecore.change", version.ref = "ecore-change" }
31ecore-xmi = { group = "org.eclipse.emf", name = "org.eclipse.emf.ecore.xmi", version.ref = "ecoreXmi" } 80ecore-codegen = { group = "org.eclipse.emf", name = "org.eclipse.emf.codegen.ecore", version.ref = "ecore-codegen" }
81ecore-xmi = { group = "org.eclipse.emf", name = "org.eclipse.emf.ecore.xmi", version.ref = "ecore-xmi" }
82emf-codegen = { group = "org.eclipse.emf", name = "org.eclipse.emf.codegen", version.ref = "emf-codegen" }
83emf-common = { group = "org.eclipse.emf", name = "org.eclipse.emf.common", version.ref = "emf-common" }
84equinox-common = { group = "org.eclipse.platform", name = "org.eclipse.equinox.common", version.ref = "equinox-common" }
85equinox-preferences = { group = "org.eclipse.platform", name = "org.eclipse.equinox.preferences", version.ref = "equinox-preferences" }
86equinox-registry = { group = "org.eclipse.platform", name = "org.eclipse.equinox.registry", version.ref = "equinox-registry" }
87errorprone-annotations = { group = "com.google.errorprone", name = "error_prone_annotations", version.ref = "errorprone" }
88findbugs-jsr305 = { group = "com.google.code.findbugs", name = "jsr305", version.ref = "findbugs" }
32gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" } 89gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" }
90guava = { group = "com.google.guava", name = "guava", version.ref = "guava" }
91guice = { group = "com.google.inject", name = "guice", version.ref = "guice" }
33hamcrest = { group = "org.hamcrest", name = "hamcrest", version.ref = "hamcrest" } 92hamcrest = { group = "org.hamcrest", name = "hamcrest", version.ref = "hamcrest" }
34jcommander = { group = "org.jcommander", name = "jcommander", version.ref = "jcommander" } 93jcommander = { group = "org.jcommander", name = "jcommander", version.ref = "jcommander" }
94jdt-core = { group = "org.eclipse.jdt", name = "org.eclipse.jdt.core", version.ref = "jdt-core" }
95jdt-debug = { group = "org.eclipse.jdt", name = "org.eclipse.jdt.debug", version.ref = "jdt-debug" }
96jdt-ecj = { group = "org.eclipse.jdt", name = "ecj", version.ref = "jdt-core" }
97jdt-launching = { group = "org.eclipse.jdt", name = "org.eclipse.jdt.launching", version.ref = "jdt-launching" }
98jakartaInject = { group = "jakarta.inject", name = "jakarta.inject-api", version.ref = "jakartaInject" }
35jetbrainsAnnotations = { group = "org.jetbrains", name = "annotations", version.ref = "jetbrainsAnnotations" } 99jetbrainsAnnotations = { group = "org.jetbrains", name = "annotations", version.ref = "jetbrainsAnnotations" }
36jetty-server = { group = "org.eclipse.jetty", name = "jetty-server", version.ref = "jetty" } 100jetty-server = { group = "org.eclipse.jetty", name = "jetty-server", version.ref = "jetty" }
37jetty-servlet = { group = "org.eclipse.jetty.ee10", name = "jetty-ee10-servlet", version.ref = "jetty" } 101jetty-servlet = { group = "org.eclipse.jetty.ee10", name = "jetty-ee10-servlet", version.ref = "jetty" }
@@ -40,24 +104,33 @@ jetty-websocket-client = { group = "org.eclipse.jetty.websocket", name = "jetty-
40jetty-websocket-server = { group = "org.eclipse.jetty.ee10.websocket", name = "jetty-ee10-websocket-jetty-server", version.ref = "jetty" } 104jetty-websocket-server = { group = "org.eclipse.jetty.ee10.websocket", name = "jetty-ee10-websocket-jetty-server", version.ref = "jetty" }
41jmh-core = { group = "org.openjdk.jmh", name = "jmh-core", version.ref = "jmh" } 105jmh-core = { group = "org.openjdk.jmh", name = "jmh-core", version.ref = "jmh" }
42jmh-annprocess = { group = "org.openjdk.jmh", name = "jmh-generator-annprocess", version.ref = "jmh" } 106jmh-annprocess = { group = "org.openjdk.jmh", name = "jmh-generator-annprocess", version.ref = "jmh" }
107jna = { group = "net.java.dev.jna", name = "jna", version.ref = "jna" }
108jna-platform = { group = "net.java.dev.jna", name = "jna-platform", version.ref = "jna" }
43junit-api = { group = "org.junit.jupiter", name = "junit-jupiter-api" } 109junit-api = { group = "org.junit.jupiter", name = "junit-jupiter-api" }
44junit-bom = { group = "org.junit", name = "junit-bom", version.ref = "junit" } 110junit-bom = { group = "org.junit", name = "junit-bom", version.ref = "junit" }
45junit-engine = { group = "org.junit.jupiter", name = "junit-jupiter-engine" } 111junit-engine = { group = "org.junit.jupiter", name = "junit-jupiter-engine" }
46junit-launcher = { group = "org.junit.platform", name = "junit-platform-launcher" } 112junit-launcher = { group = "org.junit.platform", name = "junit-platform-launcher" }
47junit-params = { group = "org.junit.jupiter", name = "junit-jupiter-params" } 113junit-params = { group = "org.junit.jupiter", name = "junit-jupiter-params" }
114lsp4j = { group = "org.eclipse.lsp4j", name = "org.eclipse.lsp4j", version.ref = "lsp4j" }
115lsp4j-jsonrpc = { group = "org.eclipse.lsp4j", name = "org.eclipse.lsp4j.jsonrpc", version.ref = "lsp4j" }
48mockito-core = { group = "org.mockito", name = "mockito-core", version.ref = "mockito" } 116mockito-core = { group = "org.mockito", name = "mockito-core", version.ref = "mockito" }
49mockito-junit = { group = "org.mockito", name = "mockito-junit-jupiter", version.ref = "mockito" } 117mockito-junit = { group = "org.mockito", name = "mockito-junit-jupiter", version.ref = "mockito" }
118mwe-core = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe.core", version.ref = "mwe" }
50mwe-utils = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe.utils", version.ref = "mwe" } 119mwe-utils = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe.utils", version.ref = "mwe" }
120mwe2-language = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe2.language", version.ref = "mwe2" }
51mwe2-launch = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe2.launch", version.ref = "mwe2" } 121mwe2-launch = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe2.launch", version.ref = "mwe2" }
52mwe2-lib = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe2.lib", version.ref = "mwe2" } 122mwe2-lib = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe2.lib", version.ref = "mwe2" }
123mwe2-runtime = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe2.runtime", version.ref = "mwe2" }
124opentest4j = { group = "org.opentestj4", name = "opentest4j", version.ref = "opentest4j" }
53ortools = { group = "com.google.ortools", name = "ortools-java", version.ref = "ortools" } 125ortools = { group = "com.google.ortools", name = "ortools-java", version.ref = "ortools" }
54refinery-z3 = { group = "tools.refinery.z3", name = "refinery-z3-solver", version.ref = "refineryZ3" } 126protobuf = { group = "com.google.protobuf", name = "protobuf-java", version.ref = "protobuf" }
127refinery-z3 = { group = "tools.refinery.z3", name = "refinery-z3-solver", version.ref = "refinery-z3" }
55slf4j = { group = "org.slf4j", name = "slf4j-api", version.ref = "slf4j" } 128slf4j = { group = "org.slf4j", name = "slf4j-api", version.ref = "slf4j" }
56slf4j-simple = { group = "org.slf4j", name = "slf4j-simple", version.ref = "slf4j" } 129slf4j-simple = { group = "org.slf4j", name = "slf4j-simple", version.ref = "slf4j" }
57slf4j-log4j = { group = "org.slf4j", name = "log4j-over-slf4j", version.ref = "slf4j" } 130slf4j-log4j = { group = "org.slf4j", name = "log4j-over-slf4j", version.ref = "slf4j" }
58xtext-core = { group = "org.eclipse.xtext", name = "org.eclipse.xtext", version.ref = "xtext" } 131xtext-core = { group = "org.eclipse.xtext", name = "org.eclipse.xtext", version.ref = "xtext" }
59xtext-generator-antlr = { group = "org.eclipse.xtext", name = "xtext-antlr-generator", version.ref = "xtextAntlrGenerator" }
60xtext-generator = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.xtext.generator", version.ref = "xtext" } 132xtext-generator = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.xtext.generator", version.ref = "xtext" }
133xtext-generator-antlr = { group = "org.eclipse.xtext", name = "xtext-antlr-generator", version.ref = "xtext-generator-antlr" }
61xtext-ide = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.ide", version.ref = "xtext" } 134xtext-ide = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.ide", version.ref = "xtext" }
62xtext-testing = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.testing", version.ref = "xtext" } 135xtext-testing = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.testing", version.ref = "xtext" }
63xtext-web = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.web", version.ref = "xtext" } 136xtext-web = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.web", version.ref = "xtext" }
diff --git a/subprojects/gradle-plugins/src/main/java/tools/refinery/gradle/plugins/RefineryJavaPlugin.java b/subprojects/gradle-plugins/src/main/java/tools/refinery/gradle/plugins/RefineryJavaPlugin.java
index 434010d5..4107695e 100644
--- a/subprojects/gradle-plugins/src/main/java/tools/refinery/gradle/plugins/RefineryJavaPlugin.java
+++ b/subprojects/gradle-plugins/src/main/java/tools/refinery/gradle/plugins/RefineryJavaPlugin.java
@@ -7,6 +7,7 @@ package tools.refinery.gradle.plugins;
7 7
8import org.gradle.api.Plugin; 8import org.gradle.api.Plugin;
9import org.gradle.api.Project; 9import org.gradle.api.Project;
10import org.gradle.api.artifacts.Configuration;
10import org.gradle.api.component.AdhocComponentWithVariants; 11import org.gradle.api.component.AdhocComponentWithVariants;
11import org.gradle.api.component.ConfigurationVariantDetails; 12import org.gradle.api.component.ConfigurationVariantDetails;
12import org.gradle.api.internal.tasks.JvmConstants; 13import org.gradle.api.internal.tasks.JvmConstants;
@@ -24,6 +25,7 @@ import tools.refinery.gradle.plugins.internal.Versions;
24 25
25import java.lang.reflect.InvocationTargetException; 26import java.lang.reflect.InvocationTargetException;
26import java.lang.reflect.Method; 27import java.lang.reflect.Method;
28import java.util.Map;
27 29
28public class RefineryJavaPlugin implements Plugin<Project> { 30public class RefineryJavaPlugin implements Plugin<Project> {
29 private static final String JUNIT_API = "org.junit.jupiter:junit-jupiter-api"; 31 private static final String JUNIT_API = "org.junit.jupiter:junit-jupiter-api";
@@ -97,15 +99,17 @@ public class RefineryJavaPlugin implements Plugin<Project> {
97 dependencies.enforcedPlatform(artifact) : dependencies.platform(artifact); 99 dependencies.enforcedPlatform(artifact) : dependencies.platform(artifact);
98 })); 100 }));
99 101
102 RefineryPluginUtils.addConditionalDependency(dependencies, JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME,
103 SLF4J_LOG4J, extension.getUseSlf4JLog4J());
100 RefineryPluginUtils.addConditionalDependency(dependencies, JavaPlugin.TEST_IMPLEMENTATION_CONFIGURATION_NAME, 104 RefineryPluginUtils.addConditionalDependency(dependencies, JavaPlugin.TEST_IMPLEMENTATION_CONFIGURATION_NAME,
101 SLF4J_LOG4J, extension.getUseSlf4JLog4J()); 105 SLF4J_LOG4J, extension.getUseSlf4JLog4J());
102 RefineryPluginUtils.addConditionalDependency(dependencies, JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, 106 RefineryPluginUtils.addConditionalDependency(dependencies, JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME,
103 SLF4J_LOG4J, extension.getUseSlf4JLog4J().map(value -> 107 SLF4J_LOG4J, extension.getUseSlf4JLog4J().map(value ->
104 Boolean.TRUE.equals(value) && target.getPlugins().hasPlugin(ApplicationPlugin.class))); 108 Boolean.TRUE.equals(value) && target.getPlugins().hasPlugin(ApplicationPlugin.class)));
105 109
106 RefineryPluginUtils.addConditionalDependency(dependencies, JavaPlugin.TEST_IMPLEMENTATION_CONFIGURATION_NAME, 110 RefineryPluginUtils.addConditionalDependency(dependencies, JavaPlugin.TEST_RUNTIME_ONLY_CONFIGURATION_NAME,
107 SLF4J_SIMPLE, extension.getUseSlf4JSimple()); 111 SLF4J_SIMPLE, extension.getUseSlf4JSimple());
108 RefineryPluginUtils.addConditionalDependency(dependencies, JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, 112 RefineryPluginUtils.addConditionalDependency(dependencies, JavaPlugin.RUNTIME_ONLY_CONFIGURATION_NAME,
109 SLF4J_SIMPLE, extension.getUseSlf4JSimple().map(value -> 113 SLF4J_SIMPLE, extension.getUseSlf4JSimple().map(value ->
110 Boolean.TRUE.equals(value) && target.getPlugins().hasPlugin(ApplicationPlugin.class))); 114 Boolean.TRUE.equals(value) && target.getPlugins().hasPlugin(ApplicationPlugin.class)));
111 115
@@ -197,10 +201,12 @@ public class RefineryJavaPlugin implements Plugin<Project> {
197 } 201 }
198 202
199 private static void excludeLog4J(Project project) { 203 private static void excludeLog4J(Project project) {
200 RefineryPluginUtils.excludeLog4J(project, JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME); 204 project.getConfigurations().withType(Configuration.class, configuration -> {
201 if (project.getPlugins().hasPlugin(ApplicationPlugin.class)) { 205 if (configuration.getName().endsWith("Classpath")) {
202 RefineryPluginUtils.excludeLog4J(project, JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME); 206 configuration.exclude(Map.of("group", "log4j", "module", "log4j"));
203 } 207 configuration.exclude(Map.of("group", "ch.qos.reload4j", "module", "reload4j"));
208 }
209 });
204 } 210 }
205 211
206 private static void configureJunitPlatform(Project project) { 212 private static void configureJunitPlatform(Project project) {
diff --git a/subprojects/gradle-plugins/src/main/java/tools/refinery/gradle/plugins/internal/RefineryPluginUtils.java b/subprojects/gradle-plugins/src/main/java/tools/refinery/gradle/plugins/internal/RefineryPluginUtils.java
index 35ebdae4..0004f249 100644
--- a/subprojects/gradle-plugins/src/main/java/tools/refinery/gradle/plugins/internal/RefineryPluginUtils.java
+++ b/subprojects/gradle-plugins/src/main/java/tools/refinery/gradle/plugins/internal/RefineryPluginUtils.java
@@ -12,7 +12,6 @@ import org.gradle.api.artifacts.dsl.DependencyHandler;
12import org.gradle.api.provider.Provider; 12import org.gradle.api.provider.Provider;
13 13
14import java.util.List; 14import java.util.List;
15import java.util.Map;
16 15
17public final class RefineryPluginUtils { 16public final class RefineryPluginUtils {
18 public static final String VERSION_PROPERTY = "tools.refinery.version"; 17 public static final String VERSION_PROPERTY = "tools.refinery.version";
@@ -26,11 +25,6 @@ public final class RefineryPluginUtils {
26 throw new IllegalArgumentException("This is a static utility class and should not be instantiated directly."); 25 throw new IllegalArgumentException("This is a static utility class and should not be instantiated directly.");
27 } 26 }
28 27
29 public static void excludeLog4J(Project project, String configurationName) {
30 var testRuntimeClasspath = project.getConfigurations().getByName(configurationName);
31 testRuntimeClasspath.exclude(Map.of("group", "log4j", "module", "log4j"));
32 }
33
34 public static void withShadowPlugin(Project project, Action<? super Project> action) { 28 public static void withShadowPlugin(Project project, Action<? super Project> action) {
35 // Method parameter in Gradle API uses raw type. 29 // Method parameter in Gradle API uses raw type.
36 @SuppressWarnings("rawtypes") 30 @SuppressWarnings("rawtypes")
diff --git a/subprojects/versions/build.gradle.kts b/subprojects/versions/build.gradle.kts
index 8137a32d..054158cb 100644
--- a/subprojects/versions/build.gradle.kts
+++ b/subprojects/versions/build.gradle.kts
@@ -17,7 +17,7 @@ mavenArtifact {
17} 17}
18 18
19val refineryVersion = "refinery" 19val refineryVersion = "refinery"
20val interpreterVersion = "refineryInterpreter" 20val interpreterVersion = "refinery-interpreter"
21val interpreterGroup = property("tools.refinery.interpreter.group").toString() 21val interpreterGroup = property("tools.refinery.interpreter.group").toString()
22val shadowVersion = "shadow" 22val shadowVersion = "shadow"
23 23