diff --git a/docker/ant/files/jdk-21/classpath/build.xml b/docker/ant/files/jdk-21/classpath/build.xml
new file mode 100644
index 00000000..01decd3f
--- /dev/null
+++ b/docker/ant/files/jdk-21/classpath/build.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docker/ant/files/jdk-21/modules/build.xml b/docker/ant/files/jdk-21/modules/build.xml
new file mode 100644
index 00000000..3f181ed9
--- /dev/null
+++ b/docker/ant/files/jdk-21/modules/build.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docker/maven/Dockerfile.bak b/docker/maven/Dockerfile.bak
deleted file mode 100644
index 0d225bbb..00000000
--- a/docker/maven/Dockerfile.bak
+++ /dev/null
@@ -1,37 +0,0 @@
-FROM ubuntu:22.04 as downloader
-
-ARG jdk=17
-ADD provision/jdk/java-${jdk}.sh provision/jdk/java-${jdk}.sh
-RUN provision/jdk/java-${jdk}.sh
-
-ARG lombokjar=lombok.jar
-ADD https://projectlombok.org/downloads/${lombokjar} /lombok.jar
-
-ARG maven=3.6.3
-ADD provision/maven/maven-${maven}.sh provision/maven/maven-${maven}.sh
-RUN provision/maven/maven-${maven}.sh
-
-FROM ubuntu:22.04
-
-COPY --from=downloader /usr/local/apache-maven/ /usr/local/apache-maven/
-COPY --from=downloader /opt/jdk/ /opt/jdk/
-
-RUN update-alternatives --install /usr/bin/java java /opt/jdk/bin/java 1000 && update-alternatives --install /usr/bin/javac javac /opt/jdk/bin/javac 1000 && update-alternatives --install /usr/bin/javadoc javadoc /opt/jdk/bin/javadoc 1000 && update-alternatives --install /usr/bin/javap javap /opt/jdk/bin/javap 1000
-
-WORKDIR workspace
-
-ADD shared/ ./
-
-ARG jdk=16
-ADD maven/files/jdk-${jdk} ./
-
-COPY --from=downloader /lombok.jar /workspace/classpath/lombok.jar
-COPY --from=downloader /lombok.jar /workspace/modules/lombok.jar
-
-ENV JDK_VERSION=${jdk}
-ENV JAVA_HOME=/opt/jdk
-ENV M2_HOME=/usr/local/apache-maven/apache-maven
-ENV M2=${M2_HOME}/bin
-ENV PATH="${M2}:${JAVA_HOME}/bin:${PATH}"
-
-ENTRYPOINT bash
diff --git a/docker/maven/files/jdk-17/classpath/pom.xml b/docker/maven/files/jdk-17/classpath/pom.xml
new file mode 100644
index 00000000..dd833235
--- /dev/null
+++ b/docker/maven/files/jdk-17/classpath/pom.xml
@@ -0,0 +1,53 @@
+
+ 4.0.0
+
+ com.example
+ lombok-jdk-${env.JDK_VERSION}
+ 1.0-SNAPSHOT
+
+
+ UTF-8
+ 16
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.0
+
+ ${java.version}
+ ${java.version}
+ true
+ true
+ true
+
+ -Werror
+ -Xlint:all
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
+
+
+
+
+
+
+
+
+ org.projectlombok
+ lombok
+ 1.2.3
+ system
+ /workspace/classpath/lombok.jar
+
+
+
+
\ No newline at end of file
diff --git a/docker/maven/files/jdk-17/modules/pom.xml b/docker/maven/files/jdk-17/modules/pom.xml
new file mode 100644
index 00000000..b1c44f5f
--- /dev/null
+++ b/docker/maven/files/jdk-17/modules/pom.xml
@@ -0,0 +1,60 @@
+
+ 4.0.0
+
+ com.example
+ lombok-jdk-${env.JDK_VERSION}
+ 1.0-SNAPSHOT
+
+
+ UTF-8
+ 17
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.0
+
+ ${java.version}
+ ${java.version}
+ true
+ true
+ true
+
+ -Werror
+ -Xlint:all
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.10
+
+
+
+
+
+
+
+
+
+ org.projectlombok
+ lombok
+ 1.2.3
+ system
+ /workspace/modules/lombok.jar
+
+
+
+
\ No newline at end of file
diff --git a/docker/maven/files/jdk-21/classpath/pom.xml b/docker/maven/files/jdk-21/classpath/pom.xml
new file mode 100644
index 00000000..e480d5cc
--- /dev/null
+++ b/docker/maven/files/jdk-21/classpath/pom.xml
@@ -0,0 +1,53 @@
+
+ 4.0.0
+
+ com.example
+ lombok-jdk-${env.JDK_VERSION}
+ 1.0-SNAPSHOT
+
+
+ UTF-8
+ 21
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.9.0
+
+ ${java.version}
+ ${java.version}
+ true
+ true
+ true
+
+ -Werror
+ -Xlint:all
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
+
+
+
+
+
+
+
+
+ org.projectlombok
+ lombok
+ 1.2.3
+ system
+ /workspace/classpath/lombok.jar
+
+
+
+
\ No newline at end of file
diff --git a/docker/maven/files/jdk-21/modules/pom.xml b/docker/maven/files/jdk-21/modules/pom.xml
new file mode 100644
index 00000000..9761bc47
--- /dev/null
+++ b/docker/maven/files/jdk-21/modules/pom.xml
@@ -0,0 +1,60 @@
+
+ 4.0.0
+
+ com.example
+ lombok-jdk-${env.JDK_VERSION}
+ 1.0-SNAPSHOT
+
+
+ UTF-8
+ 21
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.9.0
+
+ ${java.version}
+ ${java.version}
+ true
+ true
+ true
+
+ -Werror
+ -Xlint:all
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
+ -J--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.28
+
+
+
+
+
+
+
+
+
+ org.projectlombok
+ lombok
+ 1.2.3
+ system
+ /workspace/modules/lombok.jar
+
+
+
+
\ No newline at end of file
diff --git a/docker/provision/jdk/java-21.sh b/docker/provision/jdk/java-21.sh
new file mode 100644
index 00000000..5a5a3114
--- /dev/null
+++ b/docker/provision/jdk/java-21.sh
@@ -0,0 +1,4 @@
+apt-get update && apt-get install -y wget
+wget https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_linux-x64_bin.tar.gz -O jdk.tar.gz
+tar -xzf jdk.tar.gz -C /opt/
+mv /opt/jdk-21 /opt/jdk
\ No newline at end of file
diff --git a/docker/readme.md b/docker/readme.md
index 50a752ed..d5995684 100644
--- a/docker/readme.md
+++ b/docker/readme.md
@@ -13,8 +13,10 @@ By default, this is the latest released version. You can download a specific ver
### `ARG jdk=13`
The jdk version to be used. Supported values:
-
-- `13` (default)
+- `21` (based on openjdk instead of adoptium)
+- `17` (default)
+- `16`
+- `13
- `12`
- `11`
- `10`