Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add images for Jetty 12.0 #15161

Merged
merged 5 commits into from
Aug 15, 2023
Merged

Conversation

lachlan-roberts
Copy link
Contributor

Add new images after the release of Jetty 12.0.0

Signed-off-by: Lachlan Roberts <[email protected]>
@github-actions

This comment has been minimized.

@lachlan-roberts
Copy link
Contributor Author

I think the reason the these tests are failing is because the 12.0 images do not add any deploy or jsp modules. We don't do this because there are 4 options (core, ee8, ee9, ee10) and we want to leave the decision to the user of which one to use.

I will look at the test script and see if I can add the ee10-deploy and ee10-jsp modules for the 12.0 images.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@lachlan-roberts
Copy link
Contributor Author

fixed

@yosifkit
Copy link
Member

yosifkit commented Aug 9, 2023

echo "exec " $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES > $JETTY_BASE/jetty.exec
. $JETTY_BASE/jetty.exec

I've seen something similar in a few projects and I've never quite understood why. Is this so that they can use variables within JAVA_OPTIONS or JETTY_PROPERTIES? e.g., docker run -e JAVA_OPTIONS='$JAVA-something'. I don't see a functional difference between this and just an eval except that the eval doesn't create a file. The current exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES is the safest.

I will also note that quoting is lost for "$@" when run through echo, so any spaces within an argument will definitely be wrong and now be two arguments.

@lachlan-roberts
Copy link
Contributor Author

@yosifkit this is for cases like this ENV JETTY_PROPERTIES "testProp=\"foo bar\"". The bash variables will do weird things with escaping quotes if used directly with the exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES, and we did not find a way around this. This also fails if used with the eval.

Although the tmp file is not ideal it was the only workaround which seemed to work for all cases.

Note: if you attempt to reproduce this, you will need to build Jetty from the current 10.0.x branch (there is no release out with an additional fix required). And then copy over the jetty-home into /usr/local/jetty in the docker container. It works with jetty.exec tmp file but not direct exec or eval.

@yosifkit
Copy link
Member

Ah, I see why an eval wouldn't work, it needs to be a single argument, otherwise it concatenates all of them together itself. So this should work and even keep args correct for $@ (since it gets resolved during the eval and not earlier when the string is created):

eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"

@github-actions
Copy link

Diff for 3de3554:
diff --git a/_bashbrew-cat b/_bashbrew-cat
index b9bd4ba..0293a3f 100644
--- a/_bashbrew-cat
+++ b/_bashbrew-cat
@@ -3,185 +3,212 @@ GitRepo: https://github.com/eclipse/jetty.docker.git
 
 Tags: 9.4.51, 9.4, 9, 9.4.51-jdk17, 9.4-jdk17, 9-jdk17, 9.4.51-eclipse-temurin, 9.4-eclipse-temurin, 9-eclipse-temurin, 9.4.51-jdk17-eclipse-temurin, 9.4-jdk17-eclipse-temurin, 9-jdk17-eclipse-temurin
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/9.4/jdk17
 
 Tags: 9.4.51-amazoncorretto, 9.4-amazoncorretto, 9-amazoncorretto, 9.4.51-jdk17-amazoncorretto, 9.4-jdk17-amazoncorretto, 9-jdk17-amazoncorretto
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: amazoncorretto/9.4/jdk17
 
 Tags: 9.4.51-jdk8, 9.4-jdk8, 9-jdk8, 9.4.51-jdk8-eclipse-temurin, 9.4-jdk8-eclipse-temurin, 9-jdk8-eclipse-temurin
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/9.4/jdk8
 
 Tags: 9.4.51-jdk8-alpine-amazoncorretto, 9.4-jdk8-alpine-amazoncorretto, 9-jdk8-alpine-amazoncorretto
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: amazoncorretto/9.4/jdk8-alpine
 
 Tags: 9.4.51-jdk8-amazoncorretto, 9.4-jdk8-amazoncorretto, 9-jdk8-amazoncorretto
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: amazoncorretto/9.4/jdk8
 
 Tags: 9.4.51-jdk11, 9.4-jdk11, 9-jdk11, 9.4.51-jdk11-eclipse-temurin, 9.4-jdk11-eclipse-temurin, 9-jdk11-eclipse-temurin
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/9.4/jdk11
 
 Tags: 9.4.51-jdk11-alpine, 9.4-jdk11-alpine, 9-jdk11-alpine, 9.4.51-jdk11-alpine-eclipse-temurin, 9.4-jdk11-alpine-eclipse-temurin, 9-jdk11-alpine-eclipse-temurin
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/9.4/jdk11-alpine
 
 Tags: 9.4.51-jdk11-alpine-amazoncorretto, 9.4-jdk11-alpine-amazoncorretto, 9-jdk11-alpine-amazoncorretto
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: amazoncorretto/9.4/jdk11-alpine
 
 Tags: 9.4.51-jdk11-amazoncorretto, 9.4-jdk11-amazoncorretto, 9-jdk11-amazoncorretto
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: amazoncorretto/9.4/jdk11
 
 Tags: 9.4.51-jdk17-alpine, 9.4-jdk17-alpine, 9-jdk17-alpine, 9.4.51-jdk17-alpine-eclipse-temurin, 9.4-jdk17-alpine-eclipse-temurin, 9-jdk17-alpine-eclipse-temurin
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/9.4/jdk17-alpine
 
 Tags: 9.4.51-jdk17-alpine-amazoncorretto, 9.4-jdk17-alpine-amazoncorretto, 9-jdk17-alpine-amazoncorretto
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: amazoncorretto/9.4/jdk17-alpine
 
 Tags: 9.4.51-jre8, 9.4-jre8, 9-jre8, 9.4.51-jre8-eclipse-temurin, 9.4-jre8-eclipse-temurin, 9-jre8-eclipse-temurin
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/9.4/jre8
 
 Tags: 9.4.51-jre8-alpine, 9.4-jre8-alpine, 9-jre8-alpine, 9.4.51-jre8-alpine-eclipse-temurin, 9.4-jre8-alpine-eclipse-temurin, 9-jre8-alpine-eclipse-temurin
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/9.4/jre8-alpine
 
 Tags: 9.4.51-jre11, 9.4-jre11, 9-jre11, 9.4.51-jre11-eclipse-temurin, 9.4-jre11-eclipse-temurin, 9-jre11-eclipse-temurin
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/9.4/jre11
 
 Tags: 9.4.51-jre11-alpine, 9.4-jre11-alpine, 9-jre11-alpine, 9.4.51-jre11-alpine-eclipse-temurin, 9.4-jre11-alpine-eclipse-temurin, 9-jre11-alpine-eclipse-temurin
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/9.4/jre11-alpine
 
 Tags: 9.4.51-jre17, 9.4-jre17, 9-jre17, 9.4.51-jre17-eclipse-temurin, 9.4-jre17-eclipse-temurin, 9-jre17-eclipse-temurin
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/9.4/jre17
 
 Tags: 9.4.51-jre17-alpine, 9.4-jre17-alpine, 9-jre17-alpine, 9.4.51-jre17-alpine-eclipse-temurin, 9.4-jre17-alpine-eclipse-temurin, 9-jre17-alpine-eclipse-temurin
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/9.4/jre17-alpine
 
 Tags: 10.0.15, 10.0, 10, 10.0.15-jdk17, 10.0-jdk17, 10-jdk17, 10.0.15-eclipse-temurin, 10.0-eclipse-temurin, 10-eclipse-temurin, 10.0.15-jdk17-eclipse-temurin, 10.0-jdk17-eclipse-temurin, 10-jdk17-eclipse-temurin
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/10.0/jdk17
 
 Tags: 10.0.15-amazoncorretto, 10.0-amazoncorretto, 10-amazoncorretto, 10.0.15-jdk17-amazoncorretto, 10.0-jdk17-amazoncorretto, 10-jdk17-amazoncorretto
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: amazoncorretto/10.0/jdk17
 
 Tags: 10.0.15-jdk11, 10.0-jdk11, 10-jdk11, 10.0.15-jdk11-eclipse-temurin, 10.0-jdk11-eclipse-temurin, 10-jdk11-eclipse-temurin
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/10.0/jdk11
 
 Tags: 10.0.15-jdk11-alpine, 10.0-jdk11-alpine, 10-jdk11-alpine, 10.0.15-jdk11-alpine-eclipse-temurin, 10.0-jdk11-alpine-eclipse-temurin, 10-jdk11-alpine-eclipse-temurin
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/10.0/jdk11-alpine
 
 Tags: 10.0.15-jdk11-alpine-amazoncorretto, 10.0-jdk11-alpine-amazoncorretto, 10-jdk11-alpine-amazoncorretto
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: amazoncorretto/10.0/jdk11-alpine
 
 Tags: 10.0.15-jdk11-amazoncorretto, 10.0-jdk11-amazoncorretto, 10-jdk11-amazoncorretto
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: amazoncorretto/10.0/jdk11
 
 Tags: 10.0.15-jdk17-alpine, 10.0-jdk17-alpine, 10-jdk17-alpine, 10.0.15-jdk17-alpine-eclipse-temurin, 10.0-jdk17-alpine-eclipse-temurin, 10-jdk17-alpine-eclipse-temurin
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/10.0/jdk17-alpine
 
 Tags: 10.0.15-jdk17-alpine-amazoncorretto, 10.0-jdk17-alpine-amazoncorretto, 10-jdk17-alpine-amazoncorretto
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: amazoncorretto/10.0/jdk17-alpine
 
 Tags: 10.0.15-jre11, 10.0-jre11, 10-jre11, 10.0.15-jre11-eclipse-temurin, 10.0-jre11-eclipse-temurin, 10-jre11-eclipse-temurin
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/10.0/jre11
 
 Tags: 10.0.15-jre11-alpine, 10.0-jre11-alpine, 10-jre11-alpine, 10.0.15-jre11-alpine-eclipse-temurin, 10.0-jre11-alpine-eclipse-temurin, 10-jre11-alpine-eclipse-temurin
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/10.0/jre11-alpine
 
 Tags: 10.0.15-jre17, 10.0-jre17, 10-jre17, 10.0.15-jre17-eclipse-temurin, 10.0-jre17-eclipse-temurin, 10-jre17-eclipse-temurin
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/10.0/jre17
 
 Tags: 10.0.15-jre17-alpine, 10.0-jre17-alpine, 10-jre17-alpine, 10.0.15-jre17-alpine-eclipse-temurin, 10.0-jre17-alpine-eclipse-temurin, 10-jre17-alpine-eclipse-temurin
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/10.0/jre17-alpine
 
 Tags: 11.0.15, 11.0, 11, 11.0.15-jdk17, 11.0-jdk17, 11-jdk17, 11.0.15-eclipse-temurin, 11.0-eclipse-temurin, 11-eclipse-temurin, 11.0.15-jdk17-eclipse-temurin, 11.0-jdk17-eclipse-temurin, 11-jdk17-eclipse-temurin, latest, jdk17
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/11.0/jdk17
 
 Tags: 11.0.15-amazoncorretto, 11.0-amazoncorretto, 11-amazoncorretto, 11.0.15-jdk17-amazoncorretto, 11.0-jdk17-amazoncorretto, 11-jdk17-amazoncorretto
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: amazoncorretto/11.0/jdk17
 
 Tags: 11.0.15-jdk11, 11.0-jdk11, 11-jdk11, 11.0.15-jdk11-eclipse-temurin, 11.0-jdk11-eclipse-temurin, 11-jdk11-eclipse-temurin
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/11.0/jdk11
 
 Tags: 11.0.15-jdk11-alpine, 11.0-jdk11-alpine, 11-jdk11-alpine, 11.0.15-jdk11-alpine-eclipse-temurin, 11.0-jdk11-alpine-eclipse-temurin, 11-jdk11-alpine-eclipse-temurin
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/11.0/jdk11-alpine
 
 Tags: 11.0.15-jdk11-alpine-amazoncorretto, 11.0-jdk11-alpine-amazoncorretto, 11-jdk11-alpine-amazoncorretto
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: amazoncorretto/11.0/jdk11-alpine
 
 Tags: 11.0.15-jdk11-amazoncorretto, 11.0-jdk11-amazoncorretto, 11-jdk11-amazoncorretto
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: amazoncorretto/11.0/jdk11
 
 Tags: 11.0.15-jdk17-alpine, 11.0-jdk17-alpine, 11-jdk17-alpine, 11.0.15-jdk17-alpine-eclipse-temurin, 11.0-jdk17-alpine-eclipse-temurin, 11-jdk17-alpine-eclipse-temurin
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/11.0/jdk17-alpine
 
 Tags: 11.0.15-jdk17-alpine-amazoncorretto, 11.0-jdk17-alpine-amazoncorretto, 11-jdk17-alpine-amazoncorretto
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: amazoncorretto/11.0/jdk17-alpine
 
 Tags: 11.0.15-jre11, 11.0-jre11, 11-jre11, 11.0.15-jre11-eclipse-temurin, 11.0-jre11-eclipse-temurin, 11-jre11-eclipse-temurin
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/11.0/jre11
 
 Tags: 11.0.15-jre11-alpine, 11.0-jre11-alpine, 11-jre11-alpine, 11.0.15-jre11-alpine-eclipse-temurin, 11.0-jre11-alpine-eclipse-temurin, 11-jre11-alpine-eclipse-temurin
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/11.0/jre11-alpine
 
 Tags: 11.0.15-jre17, 11.0-jre17, 11-jre17, 11.0.15-jre17-eclipse-temurin, 11.0-jre17-eclipse-temurin, 11-jre17-eclipse-temurin
 Architectures: amd64, arm64v8
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/11.0/jre17
 
 Tags: 11.0.15-jre17-alpine, 11.0-jre17-alpine, 11-jre17-alpine, 11.0.15-jre17-alpine-eclipse-temurin, 11.0-jre17-alpine-eclipse-temurin, 11-jre17-alpine-eclipse-temurin
-GitCommit: a64cb1a45b90d5fc026a6356615c2ac53d991ed1
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
 Directory: eclipse-temurin/11.0/jre17-alpine
+
+Tags: 12.0.0, 12.0, 12.0.0-jdk17, 12.0-jdk17, 12.0.0-eclipse-temurin, 12.0-eclipse-temurin, 12.0.0-jdk17-eclipse-temurin, 12.0-jdk17-eclipse-temurin
+Architectures: amd64, arm64v8
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
+Directory: eclipse-temurin/12.0/jdk17
+
+Tags: 12.0.0-amazoncorretto, 12.0-amazoncorretto, 12.0.0-jdk17-amazoncorretto, 12.0-jdk17-amazoncorretto
+Architectures: amd64, arm64v8
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
+Directory: amazoncorretto/12.0/jdk17
+
+Tags: 12.0.0-jdk17-alpine, 12.0-jdk17-alpine, 12.0.0-jdk17-alpine-eclipse-temurin, 12.0-jdk17-alpine-eclipse-temurin
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
+Directory: eclipse-temurin/12.0/jdk17-alpine
+
+Tags: 12.0.0-jdk17-alpine-amazoncorretto, 12.0-jdk17-alpine-amazoncorretto
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
+Directory: amazoncorretto/12.0/jdk17-alpine
+
+Tags: 12.0.0-jre17, 12.0-jre17, 12.0.0-jre17-eclipse-temurin, 12.0-jre17-eclipse-temurin
+Architectures: amd64, arm64v8
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
+Directory: eclipse-temurin/12.0/jre17
+
+Tags: 12.0.0-jre17-alpine, 12.0-jre17-alpine, 12.0.0-jre17-alpine-eclipse-temurin, 12.0-jre17-alpine-eclipse-temurin
+GitCommit: 03c0b9d1d494f6f8b39f1e2046e680f2d3dd2604
+Directory: eclipse-temurin/12.0/jre17-alpine
diff --git a/_bashbrew-list b/_bashbrew-list
index 0c58692..bc895d7 100644
--- a/_bashbrew-list
+++ b/_bashbrew-list
@@ -229,5 +229,31 @@ jetty:11.0.15-jre17
 jetty:11.0.15-jre17-alpine
 jetty:11.0.15-jre17-alpine-eclipse-temurin
 jetty:11.0.15-jre17-eclipse-temurin
+jetty:12.0
+jetty:12.0-amazoncorretto
+jetty:12.0-eclipse-temurin
+jetty:12.0-jdk17
+jetty:12.0-jdk17-alpine
+jetty:12.0-jdk17-alpine-amazoncorretto
+jetty:12.0-jdk17-alpine-eclipse-temurin
+jetty:12.0-jdk17-amazoncorretto
+jetty:12.0-jdk17-eclipse-temurin
+jetty:12.0-jre17
+jetty:12.0-jre17-alpine
+jetty:12.0-jre17-alpine-eclipse-temurin
+jetty:12.0-jre17-eclipse-temurin
+jetty:12.0.0
+jetty:12.0.0-amazoncorretto
+jetty:12.0.0-eclipse-temurin
+jetty:12.0.0-jdk17
+jetty:12.0.0-jdk17-alpine
+jetty:12.0.0-jdk17-alpine-amazoncorretto
+jetty:12.0.0-jdk17-alpine-eclipse-temurin
+jetty:12.0.0-jdk17-amazoncorretto
+jetty:12.0.0-jdk17-eclipse-temurin
+jetty:12.0.0-jre17
+jetty:12.0.0-jre17-alpine
+jetty:12.0.0-jre17-alpine-eclipse-temurin
+jetty:12.0.0-jre17-eclipse-temurin
 jetty:jdk17
 jetty:latest
diff --git a/_bashbrew-list-build-order b/_bashbrew-list-build-order
index af11f60..1727816 100644
--- a/_bashbrew-list-build-order
+++ b/_bashbrew-list-build-order
@@ -39,3 +39,9 @@ jetty:11-jre11-eclipse-temurin
 jetty:11-jre11-alpine-eclipse-temurin
 jetty:11-jre17-eclipse-temurin
 jetty:11-jre17-alpine-eclipse-temurin
+jetty:12.0-jdk17-eclipse-temurin
+jetty:12.0-jdk17-amazoncorretto
+jetty:12.0-jdk17-alpine-eclipse-temurin
+jetty:12.0-jdk17-alpine-amazoncorretto
+jetty:12.0-jre17-eclipse-temurin
+jetty:12.0-jre17-alpine-eclipse-temurin
diff --git a/jetty_10-jdk11-alpine-amazoncorretto/Dockerfile b/jetty_10-jdk11-alpine-amazoncorretto/Dockerfile
index 0fce400..9c0dfa7 100644
--- a/jetty_10-jdk11-alpine-amazoncorretto/Dockerfile
+++ b/jetty_10-jdk11-alpine-amazoncorretto/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_10-jdk11-alpine-amazoncorretto/docker-entrypoint.sh b/jetty_10-jdk11-alpine-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jdk11-alpine-amazoncorretto/docker-entrypoint.sh
+++ b/jetty_10-jdk11-alpine-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jdk11-alpine-amazoncorretto/generate-jetty-start.sh b/jetty_10-jdk11-alpine-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jdk11-alpine-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_10-jdk11-alpine-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_10-jdk11-alpine-eclipse-temurin/Dockerfile b/jetty_10-jdk11-alpine-eclipse-temurin/Dockerfile
index d42ba18..eb0ae4e 100644
--- a/jetty_10-jdk11-alpine-eclipse-temurin/Dockerfile
+++ b/jetty_10-jdk11-alpine-eclipse-temurin/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jdk11-alpine-eclipse-temurin/generate-jetty-start.sh b/jetty_10-jdk11-alpine-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jdk11-alpine-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_10-jdk11-alpine-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_10-jdk11-amazoncorretto/Dockerfile b/jetty_10-jdk11-amazoncorretto/Dockerfile
index 5ee97aa..2cd60b1 100644
--- a/jetty_10-jdk11-amazoncorretto/Dockerfile
+++ b/jetty_10-jdk11-amazoncorretto/Dockerfile
@@ -57,8 +57,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_10-jdk11-amazoncorretto/docker-entrypoint.sh b/jetty_10-jdk11-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jdk11-amazoncorretto/docker-entrypoint.sh
+++ b/jetty_10-jdk11-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh b/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_10-jdk11-eclipse-temurin/Dockerfile b/jetty_10-jdk11-eclipse-temurin/Dockerfile
index 8e06309..dee0daa 100644
--- a/jetty_10-jdk11-eclipse-temurin/Dockerfile
+++ b/jetty_10-jdk11-eclipse-temurin/Dockerfile
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_10-jdk11-eclipse-temurin/docker-entrypoint.sh b/jetty_10-jdk11-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jdk11-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_10-jdk11-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jdk11-eclipse-temurin/generate-jetty-start.sh b/jetty_10-jdk11-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jdk11-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_10-jdk11-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_10-jdk17-alpine-amazoncorretto/Dockerfile b/jetty_10-jdk17-alpine-amazoncorretto/Dockerfile
index c2e7c46..ccc8557 100644
--- a/jetty_10-jdk17-alpine-amazoncorretto/Dockerfile
+++ b/jetty_10-jdk17-alpine-amazoncorretto/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_10-jdk17-alpine-amazoncorretto/docker-entrypoint.sh b/jetty_10-jdk17-alpine-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jdk17-alpine-amazoncorretto/docker-entrypoint.sh
+++ b/jetty_10-jdk17-alpine-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jdk17-alpine-amazoncorretto/generate-jetty-start.sh b/jetty_10-jdk17-alpine-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jdk17-alpine-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_10-jdk17-alpine-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_10-jdk17-alpine-eclipse-temurin/Dockerfile b/jetty_10-jdk17-alpine-eclipse-temurin/Dockerfile
index a9761d1..c772f1e 100644
--- a/jetty_10-jdk17-alpine-eclipse-temurin/Dockerfile
+++ b/jetty_10-jdk17-alpine-eclipse-temurin/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_10-jdk17-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_10-jdk17-alpine-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jdk17-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_10-jdk17-alpine-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jdk17-alpine-eclipse-temurin/generate-jetty-start.sh b/jetty_10-jdk17-alpine-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jdk17-alpine-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_10-jdk17-alpine-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_10-jdk17-amazoncorretto/Dockerfile b/jetty_10-jdk17-amazoncorretto/Dockerfile
index a660961..47e8020 100644
--- a/jetty_10-jdk17-amazoncorretto/Dockerfile
+++ b/jetty_10-jdk17-amazoncorretto/Dockerfile
@@ -57,8 +57,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_10-jdk17-amazoncorretto/docker-entrypoint.sh b/jetty_10-jdk17-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jdk17-amazoncorretto/docker-entrypoint.sh
+++ b/jetty_10-jdk17-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jdk17-amazoncorretto/generate-jetty-start.sh b/jetty_10-jdk17-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jdk17-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_10-jdk17-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_10-jdk17-eclipse-temurin/Dockerfile b/jetty_10-jdk17-eclipse-temurin/Dockerfile
index d9dbe8f..697692f 100644
--- a/jetty_10-jdk17-eclipse-temurin/Dockerfile
+++ b/jetty_10-jdk17-eclipse-temurin/Dockerfile
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_10-jdk17-eclipse-temurin/docker-entrypoint.sh b/jetty_10-jdk17-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jdk17-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_10-jdk17-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jdk17-eclipse-temurin/generate-jetty-start.sh b/jetty_10-jdk17-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jdk17-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_10-jdk17-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_10-jre11-alpine-eclipse-temurin/Dockerfile b/jetty_10-jre11-alpine-eclipse-temurin/Dockerfile
index 2b2ed0b..80e54af 100644
--- a/jetty_10-jre11-alpine-eclipse-temurin/Dockerfile
+++ b/jetty_10-jre11-alpine-eclipse-temurin/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_10-jre11-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_10-jre11-alpine-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jre11-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_10-jre11-alpine-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jre11-alpine-eclipse-temurin/generate-jetty-start.sh b/jetty_10-jre11-alpine-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jre11-alpine-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_10-jre11-alpine-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_10-jre11-eclipse-temurin/Dockerfile b/jetty_10-jre11-eclipse-temurin/Dockerfile
index 72a38af..b0c8cce 100644
--- a/jetty_10-jre11-eclipse-temurin/Dockerfile
+++ b/jetty_10-jre11-eclipse-temurin/Dockerfile
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_10-jre11-eclipse-temurin/docker-entrypoint.sh b/jetty_10-jre11-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jre11-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_10-jre11-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jre11-eclipse-temurin/generate-jetty-start.sh b/jetty_10-jre11-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jre11-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_10-jre11-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_10-jre17-alpine-eclipse-temurin/Dockerfile b/jetty_10-jre17-alpine-eclipse-temurin/Dockerfile
index 998a06b..03ed3a0 100644
--- a/jetty_10-jre17-alpine-eclipse-temurin/Dockerfile
+++ b/jetty_10-jre17-alpine-eclipse-temurin/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_10-jre17-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_10-jre17-alpine-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jre17-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_10-jre17-alpine-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jre17-alpine-eclipse-temurin/generate-jetty-start.sh b/jetty_10-jre17-alpine-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jre17-alpine-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_10-jre17-alpine-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_10-jre17-eclipse-temurin/Dockerfile b/jetty_10-jre17-eclipse-temurin/Dockerfile
index 9b9924b..82c08a0 100644
--- a/jetty_10-jre17-eclipse-temurin/Dockerfile
+++ b/jetty_10-jre17-eclipse-temurin/Dockerfile
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_10-jre17-eclipse-temurin/docker-entrypoint.sh b/jetty_10-jre17-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jre17-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_10-jre17-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jre17-eclipse-temurin/generate-jetty-start.sh b/jetty_10-jre17-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jre17-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_10-jre17-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_11-jdk11-alpine-amazoncorretto/Dockerfile b/jetty_11-jdk11-alpine-amazoncorretto/Dockerfile
index 4650e61..76713ba 100644
--- a/jetty_11-jdk11-alpine-amazoncorretto/Dockerfile
+++ b/jetty_11-jdk11-alpine-amazoncorretto/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_11-jdk11-alpine-amazoncorretto/docker-entrypoint.sh b/jetty_11-jdk11-alpine-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_11-jdk11-alpine-amazoncorretto/docker-entrypoint.sh
+++ b/jetty_11-jdk11-alpine-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_11-jdk11-alpine-amazoncorretto/generate-jetty-start.sh b/jetty_11-jdk11-alpine-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_11-jdk11-alpine-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_11-jdk11-alpine-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_11-jdk11-alpine-eclipse-temurin/Dockerfile b/jetty_11-jdk11-alpine-eclipse-temurin/Dockerfile
index a646e18..d03d151 100644
--- a/jetty_11-jdk11-alpine-eclipse-temurin/Dockerfile
+++ b/jetty_11-jdk11-alpine-eclipse-temurin/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_11-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_11-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_11-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_11-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_11-jdk11-alpine-eclipse-temurin/generate-jetty-start.sh b/jetty_11-jdk11-alpine-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_11-jdk11-alpine-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_11-jdk11-alpine-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_11-jdk11-amazoncorretto/Dockerfile b/jetty_11-jdk11-amazoncorretto/Dockerfile
index a1e55bd..d76b58a 100644
--- a/jetty_11-jdk11-amazoncorretto/Dockerfile
+++ b/jetty_11-jdk11-amazoncorretto/Dockerfile
@@ -57,8 +57,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_11-jdk11-amazoncorretto/docker-entrypoint.sh b/jetty_11-jdk11-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_11-jdk11-amazoncorretto/docker-entrypoint.sh
+++ b/jetty_11-jdk11-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_11-jdk11-amazoncorretto/generate-jetty-start.sh b/jetty_11-jdk11-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_11-jdk11-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_11-jdk11-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_11-jdk11-eclipse-temurin/Dockerfile b/jetty_11-jdk11-eclipse-temurin/Dockerfile
index dda20e7..8a897e9 100644
--- a/jetty_11-jdk11-eclipse-temurin/Dockerfile
+++ b/jetty_11-jdk11-eclipse-temurin/Dockerfile
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_11-jdk11-eclipse-temurin/docker-entrypoint.sh b/jetty_11-jdk11-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_11-jdk11-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_11-jdk11-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_11-jdk11-eclipse-temurin/generate-jetty-start.sh b/jetty_11-jdk11-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_11-jdk11-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_11-jdk11-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_11-jdk17-alpine-amazoncorretto/Dockerfile b/jetty_11-jdk17-alpine-amazoncorretto/Dockerfile
index bff86b0..6f79eb5 100644
--- a/jetty_11-jdk17-alpine-amazoncorretto/Dockerfile
+++ b/jetty_11-jdk17-alpine-amazoncorretto/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_11-jdk17-alpine-amazoncorretto/docker-entrypoint.sh b/jetty_11-jdk17-alpine-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_11-jdk17-alpine-amazoncorretto/docker-entrypoint.sh
+++ b/jetty_11-jdk17-alpine-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_11-jdk17-alpine-amazoncorretto/generate-jetty-start.sh b/jetty_11-jdk17-alpine-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_11-jdk17-alpine-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_11-jdk17-alpine-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_11-jdk17-alpine-eclipse-temurin/Dockerfile b/jetty_11-jdk17-alpine-eclipse-temurin/Dockerfile
index 5dfe6cf..c51c524 100644
--- a/jetty_11-jdk17-alpine-eclipse-temurin/Dockerfile
+++ b/jetty_11-jdk17-alpine-eclipse-temurin/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_11-jdk17-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_11-jdk17-alpine-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_11-jdk17-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_11-jdk17-alpine-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_11-jdk17-alpine-eclipse-temurin/generate-jetty-start.sh b/jetty_11-jdk17-alpine-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_11-jdk17-alpine-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_11-jdk17-alpine-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_11-jdk17-amazoncorretto/Dockerfile b/jetty_11-jdk17-amazoncorretto/Dockerfile
index e3130a4..e10e50c 100644
--- a/jetty_11-jdk17-amazoncorretto/Dockerfile
+++ b/jetty_11-jdk17-amazoncorretto/Dockerfile
@@ -57,8 +57,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_11-jdk17-amazoncorretto/docker-entrypoint.sh b/jetty_11-jdk17-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_11-jdk17-amazoncorretto/docker-entrypoint.sh
+++ b/jetty_11-jdk17-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_11-jdk17-amazoncorretto/generate-jetty-start.sh b/jetty_11-jdk17-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_11-jdk17-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_11-jdk17-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_11-jre11-alpine-eclipse-temurin/Dockerfile b/jetty_11-jre11-alpine-eclipse-temurin/Dockerfile
index 7b6cf81..d212c60 100644
--- a/jetty_11-jre11-alpine-eclipse-temurin/Dockerfile
+++ b/jetty_11-jre11-alpine-eclipse-temurin/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_11-jre11-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_11-jre11-alpine-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_11-jre11-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_11-jre11-alpine-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_11-jre11-alpine-eclipse-temurin/generate-jetty-start.sh b/jetty_11-jre11-alpine-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_11-jre11-alpine-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_11-jre11-alpine-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_11-jre11-eclipse-temurin/Dockerfile b/jetty_11-jre11-eclipse-temurin/Dockerfile
index 7498127..eed5c05 100644
--- a/jetty_11-jre11-eclipse-temurin/Dockerfile
+++ b/jetty_11-jre11-eclipse-temurin/Dockerfile
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_11-jre11-eclipse-temurin/docker-entrypoint.sh b/jetty_11-jre11-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_11-jre11-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_11-jre11-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_11-jre11-eclipse-temurin/generate-jetty-start.sh b/jetty_11-jre11-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_11-jre11-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_11-jre11-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_11-jre17-alpine-eclipse-temurin/Dockerfile b/jetty_11-jre17-alpine-eclipse-temurin/Dockerfile
index a6c27b3..a0ca078 100644
--- a/jetty_11-jre17-alpine-eclipse-temurin/Dockerfile
+++ b/jetty_11-jre17-alpine-eclipse-temurin/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_11-jre17-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_11-jre17-alpine-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_11-jre17-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_11-jre17-alpine-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_11-jre17-alpine-eclipse-temurin/generate-jetty-start.sh b/jetty_11-jre17-alpine-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_11-jre17-alpine-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_11-jre17-alpine-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_11-jre17-eclipse-temurin/Dockerfile b/jetty_11-jre17-eclipse-temurin/Dockerfile
index c3b5510..06cf1fc 100644
--- a/jetty_11-jre17-eclipse-temurin/Dockerfile
+++ b/jetty_11-jre17-eclipse-temurin/Dockerfile
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_11-jre17-eclipse-temurin/docker-entrypoint.sh b/jetty_11-jre17-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_11-jre17-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_11-jre17-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_11-jre17-eclipse-temurin/generate-jetty-start.sh b/jetty_11-jre17-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_11-jre17-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_11-jre17-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_11-jdk17-alpine-amazoncorretto/Dockerfile b/jetty_12.0-jdk17-alpine-amazoncorretto/Dockerfile
similarity index 91%
copy from jetty_11-jdk17-alpine-amazoncorretto/Dockerfile
copy to jetty_12.0-jdk17-alpine-amazoncorretto/Dockerfile
index bff86b0..fa937cb 100644
--- a/jetty_11-jdk17-alpine-amazoncorretto/Dockerfile
+++ b/jetty_12.0-jdk17-alpine-amazoncorretto/Dockerfile
@@ -1,7 +1,7 @@
 # DO NOT EDIT. Edit baseDockerfile-alpine and use update.sh
 FROM amazoncorretto:17-alpine
 
-ENV JETTY_VERSION 11.0.15
+ENV JETTY_VERSION 12.0.0
 ENV JETTY_HOME /usr/local/jetty
 ENV JETTY_BASE /var/lib/jetty
 ENV TMPDIR /tmp/jetty
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_12.0-jdk17-alpine-amazoncorretto/docker-entrypoint.sh
similarity index 97%
copy from jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
copy to jetty_12.0-jdk17-alpine-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_12.0-jdk17-alpine-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh b/jetty_12.0-jdk17-alpine-amazoncorretto/generate-jetty-start.sh
similarity index 87%
copy from jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh
copy to jetty_12.0-jdk17-alpine-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_12.0-jdk17-alpine-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_11-jdk17-alpine-eclipse-temurin/Dockerfile b/jetty_12.0-jdk17-alpine-eclipse-temurin/Dockerfile
similarity index 91%
copy from jetty_11-jdk17-alpine-eclipse-temurin/Dockerfile
copy to jetty_12.0-jdk17-alpine-eclipse-temurin/Dockerfile
index 5dfe6cf..6692b46 100644
--- a/jetty_11-jdk17-alpine-eclipse-temurin/Dockerfile
+++ b/jetty_12.0-jdk17-alpine-eclipse-temurin/Dockerfile
@@ -1,7 +1,7 @@
 # DO NOT EDIT. Edit baseDockerfile-alpine and use update.sh
 FROM eclipse-temurin:17-jdk-alpine
 
-ENV JETTY_VERSION 11.0.15
+ENV JETTY_VERSION 12.0.0
 ENV JETTY_HOME /usr/local/jetty
 ENV JETTY_BASE /var/lib/jetty
 ENV TMPDIR /tmp/jetty
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_12.0-jdk17-alpine-eclipse-temurin/docker-entrypoint.sh
similarity index 97%
copy from jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
copy to jetty_12.0-jdk17-alpine-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_12.0-jdk17-alpine-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh b/jetty_12.0-jdk17-alpine-eclipse-temurin/generate-jetty-start.sh
similarity index 87%
copy from jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh
copy to jetty_12.0-jdk17-alpine-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_12.0-jdk17-alpine-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_10-jdk17-amazoncorretto/Dockerfile b/jetty_12.0-jdk17-amazoncorretto/Dockerfile
similarity index 91%
copy from jetty_10-jdk17-amazoncorretto/Dockerfile
copy to jetty_12.0-jdk17-amazoncorretto/Dockerfile
index a660961..c3ea78d 100644
--- a/jetty_10-jdk17-amazoncorretto/Dockerfile
+++ b/jetty_12.0-jdk17-amazoncorretto/Dockerfile
@@ -1,7 +1,7 @@
 # DO NOT EDIT. Edit baseDockerfile-amazoncorretto and use update.sh
 FROM amazoncorretto:17
 
-ENV JETTY_VERSION 10.0.15
+ENV JETTY_VERSION 12.0.0
 ENV JETTY_HOME /usr/local/jetty
 ENV JETTY_BASE /var/lib/jetty
 ENV TMPDIR /tmp/jetty
@@ -57,8 +57,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_12.0-jdk17-amazoncorretto/docker-entrypoint.sh
similarity index 97%
copy from jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
copy to jetty_12.0-jdk17-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_12.0-jdk17-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh b/jetty_12.0-jdk17-amazoncorretto/generate-jetty-start.sh
similarity index 87%
copy from jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh
copy to jetty_12.0-jdk17-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_12.0-jdk17-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jdk17-eclipse-temurin/Dockerfile b/jetty_12.0-jdk17-eclipse-temurin/Dockerfile
similarity index 92%
copy from jetty_9-jdk17-eclipse-temurin/Dockerfile
copy to jetty_12.0-jdk17-eclipse-temurin/Dockerfile
index 1778876..639ead0 100644
--- a/jetty_9-jdk17-eclipse-temurin/Dockerfile
+++ b/jetty_12.0-jdk17-eclipse-temurin/Dockerfile
@@ -1,7 +1,7 @@
 # DO NOT EDIT. Edit baseDockerfile-slim and use update.sh
 FROM eclipse-temurin:17-jdk-focal
 
-ENV JETTY_VERSION 9.4.51.v20230217
+ENV JETTY_VERSION 12.0.0
 ENV JETTY_HOME /usr/local/jetty
 ENV JETTY_BASE /var/lib/jetty
 ENV TMPDIR /tmp/jetty
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_12.0-jdk17-eclipse-temurin/docker-entrypoint.sh
similarity index 97%
copy from jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
copy to jetty_12.0-jdk17-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_12.0-jdk17-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh b/jetty_12.0-jdk17-eclipse-temurin/generate-jetty-start.sh
similarity index 87%
copy from jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh
copy to jetty_12.0-jdk17-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_12.0-jdk17-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_10-jre17-alpine-eclipse-temurin/Dockerfile b/jetty_12.0-jre17-alpine-eclipse-temurin/Dockerfile
similarity index 91%
copy from jetty_10-jre17-alpine-eclipse-temurin/Dockerfile
copy to jetty_12.0-jre17-alpine-eclipse-temurin/Dockerfile
index 998a06b..7f75fe3 100644
--- a/jetty_10-jre17-alpine-eclipse-temurin/Dockerfile
+++ b/jetty_12.0-jre17-alpine-eclipse-temurin/Dockerfile
@@ -1,7 +1,7 @@
 # DO NOT EDIT. Edit baseDockerfile-alpine and use update.sh
 FROM eclipse-temurin:17-jre-alpine
 
-ENV JETTY_VERSION 10.0.15
+ENV JETTY_VERSION 12.0.0
 ENV JETTY_HOME /usr/local/jetty
 ENV JETTY_BASE /var/lib/jetty
 ENV TMPDIR /tmp/jetty
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_12.0-jre17-alpine-eclipse-temurin/docker-entrypoint.sh
similarity index 97%
copy from jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
copy to jetty_12.0-jre17-alpine-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_12.0-jre17-alpine-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh b/jetty_12.0-jre17-alpine-eclipse-temurin/generate-jetty-start.sh
similarity index 87%
copy from jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh
copy to jetty_12.0-jre17-alpine-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_12.0-jre17-alpine-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_11-jre17-eclipse-temurin/Dockerfile b/jetty_12.0-jre17-eclipse-temurin/Dockerfile
similarity index 92%
copy from jetty_11-jre17-eclipse-temurin/Dockerfile
copy to jetty_12.0-jre17-eclipse-temurin/Dockerfile
index c3b5510..e86be6d 100644
--- a/jetty_11-jre17-eclipse-temurin/Dockerfile
+++ b/jetty_12.0-jre17-eclipse-temurin/Dockerfile
@@ -1,7 +1,7 @@
 # DO NOT EDIT. Edit baseDockerfile-slim and use update.sh
 FROM eclipse-temurin:17-jre
 
-ENV JETTY_VERSION 11.0.15
+ENV JETTY_VERSION 12.0.0
 ENV JETTY_HOME /usr/local/jetty
 ENV JETTY_BASE /var/lib/jetty
 ENV TMPDIR /tmp/jetty
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_12.0-jre17-eclipse-temurin/docker-entrypoint.sh
similarity index 97%
copy from jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
copy to jetty_12.0-jre17-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_10-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_12.0-jre17-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh b/jetty_12.0-jre17-eclipse-temurin/generate-jetty-start.sh
similarity index 87%
copy from jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh
copy to jetty_12.0-jre17-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_10-jdk11-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_12.0-jre17-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jdk11-alpine-amazoncorretto/Dockerfile b/jetty_9-jdk11-alpine-amazoncorretto/Dockerfile
index d7c3cf1..b21d7ef 100644
--- a/jetty_9-jdk11-alpine-amazoncorretto/Dockerfile
+++ b/jetty_9-jdk11-alpine-amazoncorretto/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_9-jdk11-alpine-amazoncorretto/docker-entrypoint.sh b/jetty_9-jdk11-alpine-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jdk11-alpine-amazoncorretto/docker-entrypoint.sh
+++ b/jetty_9-jdk11-alpine-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jdk11-alpine-amazoncorretto/generate-jetty-start.sh b/jetty_9-jdk11-alpine-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jdk11-alpine-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_9-jdk11-alpine-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jdk11-alpine-eclipse-temurin/Dockerfile b/jetty_9-jdk11-alpine-eclipse-temurin/Dockerfile
index a2b2507..3087eff 100644
--- a/jetty_9-jdk11-alpine-eclipse-temurin/Dockerfile
+++ b/jetty_9-jdk11-alpine-eclipse-temurin/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_9-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_9-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_9-jdk11-alpine-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jdk11-alpine-eclipse-temurin/generate-jetty-start.sh b/jetty_9-jdk11-alpine-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jdk11-alpine-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_9-jdk11-alpine-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jdk11-amazoncorretto/Dockerfile b/jetty_9-jdk11-amazoncorretto/Dockerfile
index a047c23..886e11b 100644
--- a/jetty_9-jdk11-amazoncorretto/Dockerfile
+++ b/jetty_9-jdk11-amazoncorretto/Dockerfile
@@ -57,8 +57,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_9-jdk11-amazoncorretto/docker-entrypoint.sh b/jetty_9-jdk11-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jdk11-amazoncorretto/docker-entrypoint.sh
+++ b/jetty_9-jdk11-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jdk11-amazoncorretto/generate-jetty-start.sh b/jetty_9-jdk11-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jdk11-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_9-jdk11-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jdk11-eclipse-temurin/Dockerfile b/jetty_9-jdk11-eclipse-temurin/Dockerfile
index abd9e6e..85e721b 100644
--- a/jetty_9-jdk11-eclipse-temurin/Dockerfile
+++ b/jetty_9-jdk11-eclipse-temurin/Dockerfile
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_9-jdk11-eclipse-temurin/docker-entrypoint.sh b/jetty_9-jdk11-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jdk11-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_9-jdk11-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jdk11-eclipse-temurin/generate-jetty-start.sh b/jetty_9-jdk11-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jdk11-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_9-jdk11-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jdk17-alpine-amazoncorretto/Dockerfile b/jetty_9-jdk17-alpine-amazoncorretto/Dockerfile
index 1987e1e..461a224 100644
--- a/jetty_9-jdk17-alpine-amazoncorretto/Dockerfile
+++ b/jetty_9-jdk17-alpine-amazoncorretto/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_9-jdk17-alpine-amazoncorretto/docker-entrypoint.sh b/jetty_9-jdk17-alpine-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jdk17-alpine-amazoncorretto/docker-entrypoint.sh
+++ b/jetty_9-jdk17-alpine-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jdk17-alpine-amazoncorretto/generate-jetty-start.sh b/jetty_9-jdk17-alpine-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jdk17-alpine-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_9-jdk17-alpine-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jdk17-alpine-eclipse-temurin/Dockerfile b/jetty_9-jdk17-alpine-eclipse-temurin/Dockerfile
index e98fde7..879e070 100644
--- a/jetty_9-jdk17-alpine-eclipse-temurin/Dockerfile
+++ b/jetty_9-jdk17-alpine-eclipse-temurin/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_9-jdk17-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_9-jdk17-alpine-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jdk17-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_9-jdk17-alpine-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jdk17-alpine-eclipse-temurin/generate-jetty-start.sh b/jetty_9-jdk17-alpine-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jdk17-alpine-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_9-jdk17-alpine-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jdk17-amazoncorretto/Dockerfile b/jetty_9-jdk17-amazoncorretto/Dockerfile
index 6b85ef9..10356bc 100644
--- a/jetty_9-jdk17-amazoncorretto/Dockerfile
+++ b/jetty_9-jdk17-amazoncorretto/Dockerfile
@@ -57,8 +57,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_9-jdk17-amazoncorretto/docker-entrypoint.sh b/jetty_9-jdk17-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jdk17-amazoncorretto/docker-entrypoint.sh
+++ b/jetty_9-jdk17-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jdk17-amazoncorretto/generate-jetty-start.sh b/jetty_9-jdk17-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jdk17-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_9-jdk17-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jdk17-eclipse-temurin/Dockerfile b/jetty_9-jdk17-eclipse-temurin/Dockerfile
index 1778876..14016f6 100644
--- a/jetty_9-jdk17-eclipse-temurin/Dockerfile
+++ b/jetty_9-jdk17-eclipse-temurin/Dockerfile
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_9-jdk17-eclipse-temurin/docker-entrypoint.sh b/jetty_9-jdk17-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jdk17-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_9-jdk17-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jdk17-eclipse-temurin/generate-jetty-start.sh b/jetty_9-jdk17-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jdk17-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_9-jdk17-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jdk8-alpine-amazoncorretto/Dockerfile b/jetty_9-jdk8-alpine-amazoncorretto/Dockerfile
index 1c74fba..d41bc56 100644
--- a/jetty_9-jdk8-alpine-amazoncorretto/Dockerfile
+++ b/jetty_9-jdk8-alpine-amazoncorretto/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_9-jdk8-alpine-amazoncorretto/docker-entrypoint.sh b/jetty_9-jdk8-alpine-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jdk8-alpine-amazoncorretto/docker-entrypoint.sh
+++ b/jetty_9-jdk8-alpine-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jdk8-alpine-amazoncorretto/generate-jetty-start.sh b/jetty_9-jdk8-alpine-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jdk8-alpine-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_9-jdk8-alpine-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jdk8-amazoncorretto/Dockerfile b/jetty_9-jdk8-amazoncorretto/Dockerfile
index 31b6b52..3bba289 100644
--- a/jetty_9-jdk8-amazoncorretto/Dockerfile
+++ b/jetty_9-jdk8-amazoncorretto/Dockerfile
@@ -57,8 +57,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_9-jdk8-amazoncorretto/docker-entrypoint.sh b/jetty_9-jdk8-amazoncorretto/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jdk8-amazoncorretto/docker-entrypoint.sh
+++ b/jetty_9-jdk8-amazoncorretto/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jdk8-amazoncorretto/generate-jetty-start.sh b/jetty_9-jdk8-amazoncorretto/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jdk8-amazoncorretto/generate-jetty-start.sh
+++ b/jetty_9-jdk8-amazoncorretto/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jdk8-eclipse-temurin/Dockerfile b/jetty_9-jdk8-eclipse-temurin/Dockerfile
index 11edb26..d040064 100644
--- a/jetty_9-jdk8-eclipse-temurin/Dockerfile
+++ b/jetty_9-jdk8-eclipse-temurin/Dockerfile
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_9-jdk8-eclipse-temurin/docker-entrypoint.sh b/jetty_9-jdk8-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jdk8-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_9-jdk8-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jdk8-eclipse-temurin/generate-jetty-start.sh b/jetty_9-jdk8-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jdk8-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_9-jdk8-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jre11-alpine-eclipse-temurin/Dockerfile b/jetty_9-jre11-alpine-eclipse-temurin/Dockerfile
index aff8694..d497aec 100644
--- a/jetty_9-jre11-alpine-eclipse-temurin/Dockerfile
+++ b/jetty_9-jre11-alpine-eclipse-temurin/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_9-jre11-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_9-jre11-alpine-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jre11-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_9-jre11-alpine-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jre11-alpine-eclipse-temurin/generate-jetty-start.sh b/jetty_9-jre11-alpine-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jre11-alpine-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_9-jre11-alpine-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jre11-eclipse-temurin/Dockerfile b/jetty_9-jre11-eclipse-temurin/Dockerfile
index f302405..0e1be83 100644
--- a/jetty_9-jre11-eclipse-temurin/Dockerfile
+++ b/jetty_9-jre11-eclipse-temurin/Dockerfile
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_9-jre11-eclipse-temurin/docker-entrypoint.sh b/jetty_9-jre11-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jre11-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_9-jre11-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jre11-eclipse-temurin/generate-jetty-start.sh b/jetty_9-jre11-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jre11-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_9-jre11-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jre17-alpine-eclipse-temurin/Dockerfile b/jetty_9-jre17-alpine-eclipse-temurin/Dockerfile
index 2efb96a..d6c34ea 100644
--- a/jetty_9-jre17-alpine-eclipse-temurin/Dockerfile
+++ b/jetty_9-jre17-alpine-eclipse-temurin/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_9-jre17-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_9-jre17-alpine-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jre17-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_9-jre17-alpine-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jre17-alpine-eclipse-temurin/generate-jetty-start.sh b/jetty_9-jre17-alpine-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jre17-alpine-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_9-jre17-alpine-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jre17-eclipse-temurin/Dockerfile b/jetty_9-jre17-eclipse-temurin/Dockerfile
index 350f37c..76b74ff 100644
--- a/jetty_9-jre17-eclipse-temurin/Dockerfile
+++ b/jetty_9-jre17-eclipse-temurin/Dockerfile
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_9-jre17-eclipse-temurin/docker-entrypoint.sh b/jetty_9-jre17-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jre17-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_9-jre17-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jre17-eclipse-temurin/generate-jetty-start.sh b/jetty_9-jre17-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jre17-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_9-jre17-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jre8-alpine-eclipse-temurin/Dockerfile b/jetty_9-jre8-alpine-eclipse-temurin/Dockerfile
index 92fb2e0..be70579 100644
--- a/jetty_9-jre8-alpine-eclipse-temurin/Dockerfile
+++ b/jetty_9-jre8-alpine-eclipse-temurin/Dockerfile
@@ -56,8 +56,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	addgroup -S jetty && adduser -h $JETTY_BASE -S jetty -G jetty; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	#
diff --git a/jetty_9-jre8-alpine-eclipse-temurin/docker-entrypoint.sh b/jetty_9-jre8-alpine-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jre8-alpine-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_9-jre8-alpine-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jre8-alpine-eclipse-temurin/generate-jetty-start.sh b/jetty_9-jre8-alpine-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jre8-alpine-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_9-jre8-alpine-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_9-jre8-eclipse-temurin/Dockerfile b/jetty_9-jre8-eclipse-temurin/Dockerfile
index ef51c8d..9f7065b 100644
--- a/jetty_9-jre8-eclipse-temurin/Dockerfile
+++ b/jetty_9-jre8-eclipse-temurin/Dockerfile
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_9-jre8-eclipse-temurin/docker-entrypoint.sh b/jetty_9-jre8-eclipse-temurin/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_9-jre8-eclipse-temurin/docker-entrypoint.sh
+++ b/jetty_9-jre8-eclipse-temurin/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_9-jre8-eclipse-temurin/generate-jetty-start.sh b/jetty_9-jre8-eclipse-temurin/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_9-jre8-eclipse-temurin/generate-jetty-start.sh
+++ b/jetty_9-jre8-eclipse-temurin/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START
 
diff --git a/jetty_jdk17/Dockerfile b/jetty_jdk17/Dockerfile
index a0af339..665c077 100644
--- a/jetty_jdk17/Dockerfile
+++ b/jetty_jdk17/Dockerfile
@@ -65,8 +65,12 @@ RUN set -xe ; \
 	# Create and configure the JETTY_HOME directory
 	mkdir -p "$JETTY_BASE" ; \
 	cd $JETTY_BASE ; \
+	case "$JETTY_VERSION" in \
+		"12."*) START_MODULES="server,http,ext,resources" ;; \
+		*) START_MODULES="server,http,deploy,ext,resources,jsp,jstl,websocket" ;; \
+	esac ; \
 	java -jar "$JETTY_HOME/start.jar" --create-startd \
-		--add-to-start="server,http,deploy,jsp,jstl,ext,resources,websocket" ; \
+		--add-to-start="$START_MODULES" ; \
 	groupadd -r jetty && useradd -r -g jetty jetty ; \
 	chown -R jetty:jetty "$JETTY_HOME" "$JETTY_BASE" "$TMPDIR" ; \
 	usermod -d $JETTY_BASE jetty ; \
diff --git a/jetty_jdk17/docker-entrypoint.sh b/jetty_jdk17/docker-entrypoint.sh
index fbd410c..e90afb9 100755
--- a/jetty_jdk17/docker-entrypoint.sh
+++ b/jetty_jdk17/docker-entrypoint.sh
@@ -63,7 +63,7 @@ if expr "$*" : 'java .*/start\.jar.*$' >/dev/null ; then
 			shift
 			# The first $JAVA_OPTIONS is for the JVM which will do the --dry-run,
 			# the second one is used when generating the --dry-run output.
-			exec $JAVA $JAVA_OPTIONS "$@" $JAVA_OPTIONS $JETTY_PROPERTIES
+			eval "exec $JAVA $JAVA_OPTIONS \"\$@\" $JAVA_OPTIONS $JETTY_PROPERTIES"
 		esac
 	done
 
diff --git a/jetty_jdk17/generate-jetty-start.sh b/jetty_jdk17/generate-jetty-start.sh
index 7f8b48a..a13fc93 100755
--- a/jetty_jdk17/generate-jetty-start.sh
+++ b/jetty_jdk17/generate-jetty-start.sh
@@ -6,7 +6,7 @@ fi
 rm -f $JETTY_START
 		DRY_RUN=$(/docker-entrypoint.sh "$@" --dry-run)
 		echo "exec $DRY_RUN" \
-			| egrep '[^ ]*java .* org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
+			| egrep '[^ ]*java .*org\.eclipse\.jetty\.xml\.XmlConfiguration ' \
 			| sed -e 's/ -Djava.io.tmpdir=[^ ]*//g' -e 's/\\$//' \
 			> $JETTY_START

Relevant Maintainers:

@lachlan-roberts
Copy link
Contributor Author

@yosifkit thanks, I have updated the docker-entrypoint.sh file with your suggestion.
It seems to work and is cleaner than using the jetty.exec file.

@yosifkit yosifkit merged commit 5cac99e into docker-library:master Aug 15, 2023
joakime referenced this pull request in jetty/jetty.docker Aug 21, 2023
@gregw
Copy link
Contributor

gregw commented Aug 22, 2023

@yosifkit just a heads up that your requested change broke some users. See jetty/jetty.docker#153
Our current plan is to revert to something we know works. If you have the shell-foo to fix it better than that, then please comment on that issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants