diff --git a/src/main/java/io/quarkus/registry/app/maven/MavenResource.java b/src/main/java/io/quarkus/registry/app/maven/MavenResource.java
index 8f1fa49f..ecbe6dff 100644
--- a/src/main/java/io/quarkus/registry/app/maven/MavenResource.java
+++ b/src/main/java/io/quarkus/registry/app/maven/MavenResource.java
@@ -7,10 +7,12 @@
import org.jboss.logging.Logger;
import io.quarkus.maven.dependency.ArtifactCoords;
+import io.quarkus.registry.app.model.PlatformRelease;
import jakarta.inject.Inject;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
import jakarta.ws.rs.WebApplicationException;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.PathSegment;
@@ -55,6 +57,33 @@ private ArtifactContentProvider[] getContentProviders() {
};
}
+ @GET
+ @Path("/")
+ @Produces("text/html")
+ @Operation(hidden = true)
+ public Response welcomePage(@Context MavenConfig mavenConfig) {
+ return Response.ok(String.format("""
+
+
+ Quarkus Registry Maven Repository
+
+ Welcome to the Quarkus Registry Maven Repository
+ This endpoint provides Quarkus platform and extension metadata in the form of Maven artifacts for Quarkus Registry clients.
+ It provides the following artifacts:
+
+
+ If you use a Nexus Repository Manager and are looking for a way to configure it to use this repository, please refer to the How to register as a Nexus Repository proxy guide.
+ """,mavenConfig.getRegistryUrl(),
+ mavenConfig.getRegistryGroupId().replace(".", "/"),
+ PlatformRelease.findLatestQuarkusCore()
+ )
+ ).build();
+ }
+
@GET
@Path("{path:.+}")
@Operation(hidden = true)
diff --git a/src/main/java/io/quarkus/registry/app/model/PlatformRelease.java b/src/main/java/io/quarkus/registry/app/model/PlatformRelease.java
index ac43664e..a4d5ff68 100644
--- a/src/main/java/io/quarkus/registry/app/model/PlatformRelease.java
+++ b/src/main/java/io/quarkus/registry/app/model/PlatformRelease.java
@@ -43,7 +43,7 @@
@NamedQuery(name = "PlatformRelease.findQuarkusCores", query = """
select pr.version from PlatformRelease pr
where pr.platformStream.platform.isDefault = true
- order by pr.versionSortable
+ order by pr.versionSortable desc
"""),
@NamedQuery(name = "PlatformRelease.findLatestByQuarkusCoreVersion", query = """
select pr from PlatformRelease pr
@@ -241,6 +241,14 @@ public static List findQuarkusCores() {
.getResultList();
}
+ public static String findLatestQuarkusCore() {
+ return getEntityManager().createNamedQuery("PlatformRelease.findQuarkusCores", String.class)
+ .setMaxResults(1)
+ .getResultStream()
+ .findFirst().orElse(null);
+ }
+
+
public static boolean artifactCoordinatesExist(ArtifactCoords artifact) {
return count("#PlatformRelease.countArtifactCoordinates",
with("groupId", artifact.getGroupId())
diff --git a/src/test/java/io/quarkus/registry/app/services/MavenResourceTest.java b/src/test/java/io/quarkus/registry/app/services/MavenResourceTest.java
index c25c16de..89a7028a 100644
--- a/src/test/java/io/quarkus/registry/app/services/MavenResourceTest.java
+++ b/src/test/java/io/quarkus/registry/app/services/MavenResourceTest.java
@@ -7,6 +7,8 @@
import java.net.HttpURLConnection;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayNameGeneration;
+import org.junit.jupiter.api.DisplayNameGenerator;
import org.junit.jupiter.api.Test;
import io.quarkus.registry.app.BaseTest;
@@ -20,6 +22,7 @@
import jakarta.ws.rs.core.MediaType;
@QuarkusTest
+@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
public class MavenResourceTest extends BaseTest {
@BeforeEach
@@ -170,4 +173,13 @@ void should_return_not_found_to_sha1_if_snapshot_version_is_invalid() {
.then()
.statusCode(HttpURLConnection.HTTP_NOT_FOUND);
}
+
+ @Test
+ void should_display_welcome_page() {
+ given()
+ .get("/maven")
+ .then()
+ .statusCode(HttpURLConnection.HTTP_OK);
+ }
+
}