diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/pom.xml b/java/ql/integration-tests/java/maven-enforcer-property-version/pom.xml
new file mode 100644
index 000000000000..1fde7386b72b
--- /dev/null
+++ b/java/ql/integration-tests/java/maven-enforcer-property-version/pom.xml
@@ -0,0 +1,134 @@
+
+
+
+ 4.0.0
+
+ com.example
+ maven-sample
+ 1.0-SNAPSHOT
+
+ maven-sample
+
+ http://www.example.com
+
+
+ UTF-8
+ 1.7
+ 1.7
+ 3.9.1
+
+
+
+
+ junit
+ junit
+ 4.11
+ test
+
+
+
+
+
+
+ exec-maven-plugin
+ org.codehaus.mojo
+ 1.1.1
+
+
+ check-maven-version
+ package
+
+ java
+
+
+
+
+ com.example.App
+
+
+
+ com.diffplug.spotless
+ spotless-maven-plugin
+ 2.19.1
+
+
+
+ check
+
+ compile
+
+
+
+
+
+ /* FAIL ME */
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-enforcer-plugin
+
+
+ enforce-maven
+
+ enforce
+
+
+
+
+ ${maven.version}
+
+
+
+
+
+
+
+
+
+
+
+
+ maven-clean-plugin
+ 3.1.0
+
+
+
+ maven-resources-plugin
+ 3.0.2
+
+
+ maven-compiler-plugin
+ 3.8.0
+
+
+ maven-surefire-plugin
+ 2.22.1
+
+
+ maven-jar-plugin
+ 3.0.2
+
+
+ maven-install-plugin
+ 2.5.2
+
+
+ maven-deploy-plugin
+ 2.8.2
+
+
+
+ maven-site-plugin
+ 3.7.1
+
+
+ maven-project-info-reports-plugin
+ 3.0.0
+
+
+
+
+
diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/settings.xml b/java/ql/integration-tests/java/maven-enforcer-property-version/settings.xml
new file mode 100644
index 000000000000..a40670670a62
--- /dev/null
+++ b/java/ql/integration-tests/java/maven-enforcer-property-version/settings.xml
@@ -0,0 +1,10 @@
+
+
+
+ google-maven-central
+ GCS Maven Central mirror
+ https://maven-central.storage-download.googleapis.com/maven2/
+ central
+
+
+
diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/source_archive.expected b/java/ql/integration-tests/java/maven-enforcer-property-version/source_archive.expected
new file mode 100644
index 000000000000..d86dae4531fd
--- /dev/null
+++ b/java/ql/integration-tests/java/maven-enforcer-property-version/source_archive.expected
@@ -0,0 +1,11 @@
+pom.xml
+settings.xml
+src/main/java/com/example/App.java
+src/main/resources/my-app.properties
+src/main/resources/page.xml
+src/main/resources/struts.xml
+src/test/java/com/example/AppTest.java
+target/classes/my-app.properties
+target/classes/page.xml
+target/classes/struts.xml
+target/maven-archiver/pom.properties
diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/java/com/example/App.java b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/java/com/example/App.java
new file mode 100644
index 000000000000..3229e21835cd
--- /dev/null
+++ b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/java/com/example/App.java
@@ -0,0 +1,30 @@
+package com.example;
+
+import java.util.regex.Pattern;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+/**
+ * Hello world!
+ *
+ */
+public class App
+{
+ public static void main( String[] args )
+ {
+ System.out.println( "Hello World!" );
+ String expectedVersion = System.getenv("EXPECT_MAVEN");
+ Path mavenHome = Paths.get(System.getProperty("maven.home")).normalize();
+ String observedVersion = mavenHome.getFileName().toString();
+ if (expectedVersion != null && !expectedVersion.equals(observedVersion)) {
+ System.err.println("Wrong maven version, expected '" + expectedVersion + "' but got '" + observedVersion + "'" + mavenHome);
+ System.exit(1);
+ }
+ String commandMatcher = System.getenv("EXPECT_COMMAND_REGEX");
+ String command = System.getProperty("sun.java.command");
+ if (commandMatcher != null && !Pattern.matches(commandMatcher, command)) {
+ System.err.println("Wrong command line, '" + command + "' does not match '" + commandMatcher + "'");
+ System.exit(1);
+ }
+ }
+}
diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/my-app.properties b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/my-app.properties
new file mode 100644
index 000000000000..e566b49a29a8
--- /dev/null
+++ b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/my-app.properties
@@ -0,0 +1 @@
+version=1.0
diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/page.xml b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/page.xml
new file mode 100644
index 000000000000..2bab459cb031
--- /dev/null
+++ b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/page.xml
@@ -0,0 +1,8 @@
+
+
+A sample
+
+
+Hello world!
+
+
diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/struts.xml b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/struts.xml
new file mode 100644
index 000000000000..73fc0c6b9cb6
--- /dev/null
+++ b/java/ql/integration-tests/java/maven-enforcer-property-version/src/main/resources/struts.xml
@@ -0,0 +1,4 @@
+
+
+This is a sample file
+
diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/src/test/java/com/example/AppTest.java b/java/ql/integration-tests/java/maven-enforcer-property-version/src/test/java/com/example/AppTest.java
new file mode 100644
index 000000000000..328b4d97ce59
--- /dev/null
+++ b/java/ql/integration-tests/java/maven-enforcer-property-version/src/test/java/com/example/AppTest.java
@@ -0,0 +1,20 @@
+package com.example;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest
+{
+ /**
+ * Rigorous Test :-)
+ */
+ @Test
+ public void shouldAnswerWithTrue()
+ {
+ assertTrue( true );
+ }
+}
diff --git a/java/ql/integration-tests/java/maven-enforcer-property-version/test.py b/java/ql/integration-tests/java/maven-enforcer-property-version/test.py
new file mode 100644
index 000000000000..295db6762b6f
--- /dev/null
+++ b/java/ql/integration-tests/java/maven-enforcer-property-version/test.py
@@ -0,0 +1,9 @@
+import os
+
+def test(codeql, java):
+ codeql.database.create(
+ _env={
+ "EXPECT_MAVEN": "apache-maven-3.9.16",
+ "LGTM_INDEX_MAVEN_SETTINGS_FILE": os.path.join(os.path.dirname(os.path.realpath(__file__)), "settings.xml"),
+ },
+ )
diff --git a/java/ql/integration-tests/java/maven-enforcer-single-version/test.py b/java/ql/integration-tests/java/maven-enforcer-single-version/test.py
index a71c8821d5e6..295db6762b6f 100644
--- a/java/ql/integration-tests/java/maven-enforcer-single-version/test.py
+++ b/java/ql/integration-tests/java/maven-enforcer-single-version/test.py
@@ -3,6 +3,7 @@
def test(codeql, java):
codeql.database.create(
_env={
+ "EXPECT_MAVEN": "apache-maven-3.9.16",
"LGTM_INDEX_MAVEN_SETTINGS_FILE": os.path.join(os.path.dirname(os.path.realpath(__file__)), "settings.xml"),
},
)