From 908fe96c7f9a5f4b4d27bc80faef127f92331b06 Mon Sep 17 00:00:00 2001 From: Andriy Dmytruk Date: Thu, 22 Aug 2024 14:04:07 -0400 Subject: [PATCH] Add support for HTTP Poja runtime --- .../io/micronaut/gradle/FullMicronautRuntimeSpec.groovy | 2 +- .../io/micronaut/gradle/RuntimeDependenciesSpec.groovy | 2 ++ .../main/java/io/micronaut/gradle/MicronautRuntime.java | 6 +++++- .../io/micronaut/gradle/MicronautRuntimeDependencies.java | 7 +++++++ .../groovy/io/micronaut/gradle/MicronautRuntimeSpec.groovy | 2 +- src/docs/asciidoc/index.adoc | 1 + 6 files changed, 17 insertions(+), 3 deletions(-) diff --git a/functional-tests/src/test/groovy/io/micronaut/gradle/FullMicronautRuntimeSpec.groovy b/functional-tests/src/test/groovy/io/micronaut/gradle/FullMicronautRuntimeSpec.groovy index 38798843..3251da2c 100644 --- a/functional-tests/src/test/groovy/io/micronaut/gradle/FullMicronautRuntimeSpec.groovy +++ b/functional-tests/src/test/groovy/io/micronaut/gradle/FullMicronautRuntimeSpec.groovy @@ -84,6 +84,6 @@ public class FooControllerTest { task.outcome == TaskOutcome.SUCCESS where: - runtime << ["netty", "lambda_java", "lambda_provided", "jetty", "oracle_function", "tomcat", "google_function"] + runtime << ["netty", "lambda_java", "lambda_provided", "jetty", "oracle_function", "tomcat", "google_function", "http_poja"] } } diff --git a/functional-tests/src/test/groovy/io/micronaut/gradle/RuntimeDependenciesSpec.groovy b/functional-tests/src/test/groovy/io/micronaut/gradle/RuntimeDependenciesSpec.groovy index 75b1200f..3fee3b92 100644 --- a/functional-tests/src/test/groovy/io/micronaut/gradle/RuntimeDependenciesSpec.groovy +++ b/functional-tests/src/test/groovy/io/micronaut/gradle/RuntimeDependenciesSpec.groovy @@ -58,6 +58,8 @@ class RuntimeDependenciesSpec extends AbstractEagerConfiguringFunctionalTest { 'lambda_provided' | 'compileClasspath' || ["io.micronaut.aws:micronaut-function-aws-api-proxy", "io.micronaut.aws:micronaut-function-aws-custom-runtime"] 'lambda_provided' | 'developmentOnly' || ["io.micronaut.aws:micronaut-function-aws-api-proxy-test"] 'lambda_provided' | 'testRuntimeClasspath' || ["io.micronaut.aws:micronaut-function-aws-api-proxy-test"] + 'http_poja' | 'compileClasspath' || ['io.micronaut.servlet:micronaut-http-poja-apache'] + 'http_poja' | 'testRuntimeClasspath' || ['io.micronaut.servlet:micronaut-http-poja-apache', 'io.micronaut.servlet:micronaut-http-poja-test'] description = String.join(",", coordinates) } diff --git a/minimal-plugin/src/main/java/io/micronaut/gradle/MicronautRuntime.java b/minimal-plugin/src/main/java/io/micronaut/gradle/MicronautRuntime.java index fda26559..5445066f 100644 --- a/minimal-plugin/src/main/java/io/micronaut/gradle/MicronautRuntime.java +++ b/minimal-plugin/src/main/java/io/micronaut/gradle/MicronautRuntime.java @@ -51,7 +51,11 @@ public enum MicronautRuntime { /** * Azure Cloud Function. */ - AZURE_FUNCTION; + AZURE_FUNCTION, + /** + * Plain old Java application based on Apache libraries. + */ + HTTP_POJA; private final DockerBuildStrategy buildStrategy; diff --git a/minimal-plugin/src/main/java/io/micronaut/gradle/MicronautRuntimeDependencies.java b/minimal-plugin/src/main/java/io/micronaut/gradle/MicronautRuntimeDependencies.java index e17b04bf..af67e8bb 100644 --- a/minimal-plugin/src/main/java/io/micronaut/gradle/MicronautRuntimeDependencies.java +++ b/minimal-plugin/src/main/java/io/micronaut/gradle/MicronautRuntimeDependencies.java @@ -24,6 +24,7 @@ import static io.micronaut.gradle.MicronautRuntime.JETTY; import static io.micronaut.gradle.MicronautRuntime.NETTY; import static io.micronaut.gradle.MicronautRuntime.NONE; +import static io.micronaut.gradle.MicronautRuntime.HTTP_POJA; import static io.micronaut.gradle.MicronautRuntime.TOMCAT; import static io.micronaut.gradle.MicronautRuntime.UNDERTOW; @@ -61,6 +62,8 @@ public final class MicronautRuntimeDependencies { private static final String ARTIFACT_ID_MICRONAUT_SERVLET_JETTY = "micronaut-http-server-jetty"; private static final String ARTIFACT_ID_MICRONAUT_SERVLET_TOMCAT = "micronaut-http-server-tomcat"; private static final String ARTIFACT_ID_MICRONAUT_SERVLET_UNDERTOW = "micronaut-http-server-undertow"; + private static final String ARTIFACT_ID_MICRONAUT_SERVLET_POJA_APACHE = "micronaut-http-poja-apache"; + private static final String ARTIFACT_ID_MICRONAUT_SERVLET_POJA_TEST = "micronaut-http-poja-test"; private static final ConfigurableVersionProperty AWS_VERSION_PROPERTY = ConfigurableVersionProperty.of("aws"); private static final ConfigurableVersionProperty AZURE_VERSION_PROPERTY = ConfigurableVersionProperty.of("azure"); @@ -133,6 +136,10 @@ public static Dependencies findApplicationPluginDependenciesByRuntime(MicronautR } else if (runtime == UNDERTOW) { return Dependencies.builder().implementation(micronautServletDependency(ARTIFACT_ID_MICRONAUT_SERVLET_UNDERTOW), SERVLET_VERSION_PROPERTY).build(); + } else if (runtime == HTTP_POJA) { + return Dependencies.builder().implementation(micronautServletDependency(ARTIFACT_ID_MICRONAUT_SERVLET_POJA_APACHE), SERVLET_VERSION_PROPERTY) + .testImplementation(micronautServletDependency(ARTIFACT_ID_MICRONAUT_SERVLET_POJA_TEST), SERVLET_VERSION_PROPERTY) + .build(); } else if (runtime != NONE) { throw new GradleException("Application plugin dependencies not specified for runtime " + runtime.name()); } diff --git a/minimal-plugin/src/test/groovy/io/micronaut/gradle/MicronautRuntimeSpec.groovy b/minimal-plugin/src/test/groovy/io/micronaut/gradle/MicronautRuntimeSpec.groovy index 4e9d4e4d..c2d7224c 100644 --- a/minimal-plugin/src/test/groovy/io/micronaut/gradle/MicronautRuntimeSpec.groovy +++ b/minimal-plugin/src/test/groovy/io/micronaut/gradle/MicronautRuntimeSpec.groovy @@ -83,6 +83,6 @@ public class FooControllerTest { task.outcome == TaskOutcome.SUCCESS where: - runtime << ["netty", "lambda_provided", "lambda_java", "jetty", "oracle_function", "tomcat"] + runtime << ["netty", "lambda_provided", "lambda_java", "jetty", "oracle_function", "tomcat", "http_poja"] } } diff --git a/src/docs/asciidoc/index.adoc b/src/docs/asciidoc/index.adoc index 0c549d19..5289634c 100644 --- a/src/docs/asciidoc/index.adoc +++ b/src/docs/asciidoc/index.adoc @@ -1055,6 +1055,7 @@ The available runtimes are: * `oracle_function` - A Project.fn runtime for deploying Oracle Functions * `google_function` - A runtime for deploying Google Functions. * `azure_function` - A runtime for deploying Azure Functions +* `http_poja` - A plain old java application runtime based on Apache libraries The advantage of allowing your dependencies to be dictated by the runtime is that you can potentially take the same application and deploy it to any of the above runtimes without changes.