diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/pom.xml b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/pom.xml
new file mode 100644
index 000000000000..bdd4c42de407
--- /dev/null
+++ b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/pom.xml
@@ -0,0 +1,35 @@
+
+ 4.0.0
+
+ com.mycompany.app
+ my-app
+ 1.0-SNAPSHOT
+
+
+ 8
+ 8
+
+
+
+
+ snapshot-test-repo
+ http://localhost:9427/snapshots
+
+ false
+
+
+ true
+ always
+
+
+
+
+
+
+ com.github.my.snapshot.test
+ snapshottest
+ 1.0-SNAPSHOT
+
+
+
diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml
new file mode 100644
index 000000000000..cad1b0efc604
--- /dev/null
+++ b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml
@@ -0,0 +1,24 @@
+
+ com.github.my.snapshot.test
+ snapshottest
+ 1.0-SNAPSHOT
+
+ 20230101020304
+
+ 20230901.050514
+ 100
+
+
+
+ jar
+ 1.0-20230901.050514-100
+ 20230101020304
+
+
+ pom
+ 1.0-20230901.050514-100
+ 20230101020304
+
+
+
+
diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.md5 b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.md5
new file mode 100644
index 000000000000..4dbc3c93d9bc
--- /dev/null
+++ b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.md5
@@ -0,0 +1 @@
+cf2064037098dc6d4294ef6f1a12dc75
diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.sha1 b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.sha1
new file mode 100644
index 000000000000..9b090ce73ad3
--- /dev/null
+++ b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/maven-metadata.xml.sha1
@@ -0,0 +1 @@
+aeabf1dbf735290f5317d78459b3219d267dbb0e
diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar
new file mode 100644
index 000000000000..4c905cefca86
Binary files /dev/null and b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar differ
diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.md5 b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.md5
new file mode 100644
index 000000000000..99cb14715c01
--- /dev/null
+++ b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.md5
@@ -0,0 +1 @@
+dbb202adb2f6c5504c9b29b93610dd9e
diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.sha1 b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.sha1
new file mode 100644
index 000000000000..0ad4fb49ea98
--- /dev/null
+++ b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.jar.sha1
@@ -0,0 +1 @@
+6db6f637a68116728830d5610cbafb608bc58a21
diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom
new file mode 100644
index 000000000000..e5d6da7cab09
--- /dev/null
+++ b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom
@@ -0,0 +1,13 @@
+
+ 4.0.0
+
+ com.github.my.snapshot.test
+ snapshottest
+ 1.0-SNAPSHOT
+
+
+ 1.8
+ 1.8
+
+
diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.md5 b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.md5
new file mode 100644
index 000000000000..f596dfe5019b
--- /dev/null
+++ b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.md5
@@ -0,0 +1 @@
+66c5f73407153610dc3f5743eef678f3
diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.sha1 b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.sha1
new file mode 100644
index 000000000000..d5b75cd08e6a
--- /dev/null
+++ b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/repo/snapshots/com/github/my/snapshot/test/snapshottest/1.0-SNAPSHOT/snapshottest-1.0-20230901.050514-100.pom.sha1
@@ -0,0 +1 @@
+f895a88d2490dbcec8228c2a528bde029d80409e
diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/src/main/java/Test.java b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/src/main/java/Test.java
new file mode 100644
index 000000000000..98b6d35b15b3
--- /dev/null
+++ b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/src/main/java/Test.java
@@ -0,0 +1,7 @@
+import testpkg.DepClass;
+
+public class Test {
+
+ DepClass dc;
+
+}
diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.expected b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.expected
new file mode 100644
index 000000000000..5179970f7c49
--- /dev/null
+++ b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.expected
@@ -0,0 +1,3 @@
+diagnostics
+#select
+| DepClass |
diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.py b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.py
new file mode 100644
index 000000000000..55f8f639eaec
--- /dev/null
+++ b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.py
@@ -0,0 +1,12 @@
+import sys
+
+from create_database_utils import *
+import subprocess
+
+repo_server_process = subprocess.Popen(["python3", "-m", "http.server", "9427"], cwd = "repo")
+
+try:
+ run_codeql_database_create([], lang="java", extra_args=["--extractor-option=buildless=true"], extra_env={"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true"})
+finally:
+ repo_server_process.kill()
+
diff --git a/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.ql b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.ql
new file mode 100644
index 000000000000..66153bcc0835
--- /dev/null
+++ b/java/ql/integration-tests/all-platforms/java/buildless-snapshot-repository/test.ql
@@ -0,0 +1,8 @@
+import java
+import semmle.code.java.Diagnostics
+
+query predicate diagnostics(Diagnostic d) { any() }
+
+from Class c
+where c.getName() = "DepClass"
+select c.toString()