From ca6a503d7367f11b614ea4a6cfffb786fdeac9b6 Mon Sep 17 00:00:00 2001 From: Jared Anderson Date: Thu, 21 May 2026 16:13:51 -0500 Subject: [PATCH 1/2] Update start to include Liberty for Jakarta EE 11 --- .github/workflows/nightly.yml | 42 +++++++++++++++++++ .../src/main/liberty/config/server.xml | 8 +++- .../java/org/eclipse/starter/ui/Project.java | 2 +- ui/src/main/webapp/index.xhtml | 8 +++- 4 files changed, 57 insertions(+), 3 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 70590d8..ef34b14 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -801,6 +801,27 @@ jobs: docker rmi test-image rm -rf app/open-liberty + - name: Run Archetype for EE 11, SE 17, Open Liberty, with Docker + run: | + mvn archetype:generate -DinteractiveMode=false -DaskForDefaultPropertyValues=false -DarchetypeGroupId=org.eclipse.starter -DarchetypeArtifactId=jakarta-starter -DarchetypeVersion=2.8.0-SNAPSHOT -DjakartaVersion=11 -Dprofile=full -DjavaVersion=17 -Druntime="open-liberty" -Ddocker=yes -DoutputDirectory=app/open-liberty -Dgoals="clean package" + docker build -t test-image app/open-liberty/jakartaee-hello-world + docker rmi test-image + rm -rf app/open-liberty + + - name: Run Archetype for EE 11 Web Profile, SE 17, Open Liberty, with Docker + run: | + mvn archetype:generate -DinteractiveMode=false -DaskForDefaultPropertyValues=false -DarchetypeGroupId=org.eclipse.starter -DarchetypeArtifactId=jakarta-starter -DarchetypeVersion=2.8.0-SNAPSHOT -DjakartaVersion=11 -Dprofile=web -DjavaVersion=17 -Druntime="open-liberty" -Ddocker=yes -DoutputDirectory=app/open-liberty -Dgoals="clean package" + docker build -t test-image app/open-liberty/jakartaee-hello-world + docker rmi test-image + rm -rf app/open-liberty + + - name: Run Archetype for EE 11 Core Profile, SE 17, Open Liberty, with Docker + run: | + mvn archetype:generate -DinteractiveMode=false -DaskForDefaultPropertyValues=false -DarchetypeGroupId=org.eclipse.starter -DarchetypeArtifactId=jakarta-starter -DarchetypeVersion=2.8.0-SNAPSHOT -DjakartaVersion=11 -Dprofile=core -DjavaVersion=17 -Druntime="open-liberty" -Ddocker=yes -DoutputDirectory=app/open-liberty -Dgoals="clean package" + docker build -t test-image app/open-liberty/jakartaee-hello-world + docker rmi test-image + rm -rf app/open-liberty + - name: Run Archetype for EE 8, SE 17, Payara, with Docker run: | mvn archetype:generate -DinteractiveMode=false -DaskForDefaultPropertyValues=false -DarchetypeGroupId=org.eclipse.starter -DarchetypeArtifactId=jakarta-starter -DarchetypeVersion=2.8.0-SNAPSHOT -DjakartaVersion=8 -Dprofile=full -DjavaVersion=17 -Druntime=payara -Ddocker=yes -DoutputDirectory=app/payara -Dgoals="clean package" @@ -1074,6 +1095,27 @@ jobs: docker rmi test-image rm -rf app/open-liberty + - name: Run Archetype for EE 11, SE 21, Open Liberty, with Docker + run: | + mvn archetype:generate -DinteractiveMode=false -DaskForDefaultPropertyValues=false -DarchetypeGroupId=org.eclipse.starter -DarchetypeArtifactId=jakarta-starter -DarchetypeVersion=2.8.0-SNAPSHOT -DjakartaVersion=11 -Dprofile=full -DjavaVersion=21 -Druntime="open-liberty" -Ddocker=yes -DoutputDirectory=app/open-liberty -Dgoals="clean package" + docker build -t test-image app/open-liberty/jakartaee-hello-world + docker rmi test-image + rm -rf app/open-liberty + + - name: Run Archetype for EE 11 Web Profile, SE 21, Open Liberty, with Docker + run: | + mvn archetype:generate -DinteractiveMode=false -DaskForDefaultPropertyValues=false -DarchetypeGroupId=org.eclipse.starter -DarchetypeArtifactId=jakarta-starter -DarchetypeVersion=2.8.0-SNAPSHOT -DjakartaVersion=11 -Dprofile=web -DjavaVersion=21 -Druntime="open-liberty" -Ddocker=yes -DoutputDirectory=app/open-liberty -Dgoals="clean package" + docker build -t test-image app/open-liberty/jakartaee-hello-world + docker rmi test-image + rm -rf app/open-liberty + + - name: Run Archetype for EE 11 Core Profile, SE 21, Open Liberty, with Docker + run: | + mvn archetype:generate -DinteractiveMode=false -DaskForDefaultPropertyValues=false -DarchetypeGroupId=org.eclipse.starter -DarchetypeArtifactId=jakarta-starter -DarchetypeVersion=2.8.0-SNAPSHOT -DjakartaVersion=11 -Dprofile=core -DjavaVersion=21 -Druntime="open-liberty" -Ddocker=yes -DoutputDirectory=app/open-liberty -Dgoals="clean package" + docker build -t test-image app/open-liberty/jakartaee-hello-world + docker rmi test-image + rm -rf app/open-liberty + - name: Run Archetype for EE 8, SE 21, Payara, with Docker run: | mvn archetype:generate -DinteractiveMode=false -DaskForDefaultPropertyValues=false -DarchetypeGroupId=org.eclipse.starter -DarchetypeArtifactId=jakarta-starter -DarchetypeVersion=2.8.0-SNAPSHOT -DjakartaVersion=8 -Dprofile=full -DjavaVersion=21 -Druntime=payara -Ddocker=yes -DoutputDirectory=app/payara -Dgoals="clean package" | tee mvn_output.txt diff --git a/archetype/src/main/resources/archetype-resources/src/main/liberty/config/server.xml b/archetype/src/main/resources/archetype-resources/src/main/liberty/config/server.xml index 557a937..3fd3669 100644 --- a/archetype/src/main/resources/archetype-resources/src/main/liberty/config/server.xml +++ b/archetype/src/main/resources/archetype-resources/src/main/liberty/config/server.xml @@ -18,12 +18,18 @@ #else webProfile-10.0 #end -#else +#elseif (${jakartaVersion} == '11') #if (${profile} == 'full') jakartaee-11.0 #else webProfile-11.0 #end +#else + #if (${profile} == 'full') + jakartaee-12.0 + #else + webProfile-12.0 + #end #end diff --git a/ui/src/main/java/org/eclipse/starter/ui/Project.java b/ui/src/main/java/org/eclipse/starter/ui/Project.java index a06ab25..00fda1a 100644 --- a/ui/src/main/java/org/eclipse/starter/ui/Project.java +++ b/ui/src/main/java/org/eclipse/starter/ui/Project.java @@ -277,7 +277,7 @@ private void updateRuntimeEnabledStates() { runtimes.get("glassfish").setDisabled(false); } - if (jakartaVersion == 11) { + if (jakartaVersion == 12) { runtimes.get("open-liberty").setDisabled(true); } else { runtimes.get("open-liberty").setDisabled(false); diff --git a/ui/src/main/webapp/index.xhtml b/ui/src/main/webapp/index.xhtml index b0559d4..cbf29d0 100644 --- a/ui/src/main/webapp/index.xhtml +++ b/ui/src/main/webapp/index.xhtml @@ -31,7 +31,10 @@ + value="Jakarta EE 11 requires Java SE 17 or later."/> + @@ -74,6 +77,9 @@ + From 3666eb1f2b095f2c1cfa83db5ea1905882eae43c Mon Sep 17 00:00:00 2001 From: Jared Anderson Date: Mon, 8 Jun 2026 16:14:00 -0500 Subject: [PATCH 2/2] Review updates --- .github/workflows/nightly.yml | 2 +- .../META-INF/archetype-post-generate.groovy | 17 ++++++++++------- .../src/main/liberty/config/server.xml | 8 +------- .../java/org/eclipse/starter/ui/Project.java | 6 +----- ui/src/main/webapp/index.xhtml | 12 +++--------- 5 files changed, 16 insertions(+), 29 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index ef34b14..e7ed2d5 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -922,7 +922,7 @@ jobs: mvn archetype:generate -DinteractiveMode=false -DaskForDefaultPropertyValues=false -DarchetypeGroupId=org.eclipse.starter -DarchetypeArtifactId=jakarta-starter -DarchetypeVersion=2.8.0-SNAPSHOT -DjakartaVersion=11 -Dprofile=full -DjavaVersion=17 -Druntime=wildfly -DoutputDirectory=app/wildfly -Dgoals="clean package" | tee mvn_output.txt MAVEN_EXIT_CODE=${PIPESTATUS[0]} - ERROR_MESSAGE="only Payara currently supports Jakarta EE 11 in a stable release" + ERROR_MESSAGE="WildFly does not support Jakarta EE 11" if ! { [ $MAVEN_EXIT_CODE -ne 0 ] && grep -q "$ERROR_MESSAGE" mvn_output.txt; }; then echo "Maven build did not fail, or the expected error message was not found. Test failed." exit 1 diff --git a/archetype/src/main/resources/META-INF/archetype-post-generate.groovy b/archetype/src/main/resources/META-INF/archetype-post-generate.groovy index fe92cd1..6cc485c 100644 --- a/archetype/src/main/resources/META-INF/archetype-post-generate.groovy +++ b/archetype/src/main/resources/META-INF/archetype-post-generate.groovy @@ -46,13 +46,6 @@ private validateInput(jakartaVersion, profile, javaVersion, runtime, docker, Fil throw new RuntimeException("Failed, valid Docker options are yes and no") } - // For now, this catch-all will simplify the rest of the validation. - // It should be evolved once more runtimes properly suppport Jakarta EE 11. - if ((jakartaVersion == '11') && (runtime != 'none') && (runtime != 'payara')) { - FileUtils.forceDelete(outputDirectory) - throw new RuntimeException("Failed, only Payara currently supports Jakarta EE 11 in a stable release") - } - if ((profile == 'core') && (Double.valueOf(jakartaVersion) < 10)) { FileUtils.forceDelete(outputDirectory) throw new RuntimeException("Failed, the Core Profile is only supported for Jakarta EE 10 and above") @@ -69,6 +62,11 @@ private validateInput(jakartaVersion, profile, javaVersion, runtime, docker, Fil } if (runtime == 'glassfish') { + if ((jakartaVersion == '11')) { + FileUtils.forceDelete(outputDirectory) + throw new RuntimeException("Failed, GlassFish does not support Jakarta EE 11") + } + if (profile == 'core') { FileUtils.forceDelete(outputDirectory) throw new RuntimeException("Failed, GlassFish does not support the Core Profile") @@ -127,6 +125,11 @@ private validateInput(jakartaVersion, profile, javaVersion, runtime, docker, Fil } if (runtime == 'wildfly') { + if ((jakartaVersion == '11')) { + FileUtils.forceDelete(outputDirectory) + throw new RuntimeException("Failed, WildFly does not support Jakarta EE 11") + } + if ((jakartaVersion == '9') || (jakartaVersion == '9.1')) { FileUtils.forceDelete(outputDirectory) throw new RuntimeException("Failed, WildFly does not offer a stable release for Jakarta EE 9 or Jakarta EE 9.1") diff --git a/archetype/src/main/resources/archetype-resources/src/main/liberty/config/server.xml b/archetype/src/main/resources/archetype-resources/src/main/liberty/config/server.xml index 3fd3669..557a937 100644 --- a/archetype/src/main/resources/archetype-resources/src/main/liberty/config/server.xml +++ b/archetype/src/main/resources/archetype-resources/src/main/liberty/config/server.xml @@ -18,18 +18,12 @@ #else webProfile-10.0 #end -#elseif (${jakartaVersion} == '11') +#else #if (${profile} == 'full') jakartaee-11.0 #else webProfile-11.0 #end -#else - #if (${profile} == 'full') - jakartaee-12.0 - #else - webProfile-12.0 - #end #end diff --git a/ui/src/main/java/org/eclipse/starter/ui/Project.java b/ui/src/main/java/org/eclipse/starter/ui/Project.java index 00fda1a..a43147c 100644 --- a/ui/src/main/java/org/eclipse/starter/ui/Project.java +++ b/ui/src/main/java/org/eclipse/starter/ui/Project.java @@ -277,11 +277,7 @@ private void updateRuntimeEnabledStates() { runtimes.get("glassfish").setDisabled(false); } - if (jakartaVersion == 12) { - runtimes.get("open-liberty").setDisabled(true); - } else { - runtimes.get("open-liberty").setDisabled(false); - } + runtimes.get("open-liberty").setDisabled(false); if (jakartaVersion == 8 && javaVersion == 21) { // Payara 5 does not support Java SE 21. diff --git a/ui/src/main/webapp/index.xhtml b/ui/src/main/webapp/index.xhtml index cbf29d0..2b8f63a 100644 --- a/ui/src/main/webapp/index.xhtml +++ b/ui/src/main/webapp/index.xhtml @@ -31,10 +31,7 @@ - + value="Jakarta EE 11 requires Java SE 17 or later, Jakarta EE 10 requires Java SE 11 or later."/> @@ -55,7 +52,7 @@ + value="Core Profile is only available for Jakarta EE 10 and later."/> @@ -76,10 +73,7 @@ - + value="Java SE 11 requires Jakarta EE 10 or earlier, Java SE 8 requires Jakarta EE 9.1 or earlier."/>