diff --git a/arthur-impl/src/main/java/org/apache/geronimo/arthur/impl/nativeimage/ArthurNativeImageConfiguration.java b/arthur-impl/src/main/java/org/apache/geronimo/arthur/impl/nativeimage/ArthurNativeImageConfiguration.java
index 3b13c9b..7e59074 100644
--- a/arthur-impl/src/main/java/org/apache/geronimo/arthur/impl/nativeimage/ArthurNativeImageConfiguration.java
+++ b/arthur-impl/src/main/java/org/apache/geronimo/arthur/impl/nativeimage/ArthurNativeImageConfiguration.java
@@ -67,9 +67,6 @@
     @GraalCommandPart(order = 12, template = "-H:+ReportExceptionStackTraces")
     private boolean reportExceptionStackTraces = true;
 
-    @GraalCommandPart(order = 13, template = "-H:+TraceClassInitialization")
-    private boolean traceClassInitialization = true;
-
     @GraalCommandPart(order = 14, template = "-H:+PrintClassInitialization")
     private boolean printClassInitialization = false;
 
diff --git a/arthur-impl/src/test/java/org/apache/geronimo/arthur/impl/nativeimage/CommandGeneratorTest.java b/arthur-impl/src/test/java/org/apache/geronimo/arthur/impl/nativeimage/CommandGeneratorTest.java
index 9d9484a..fef9fdc 100644
--- a/arthur-impl/src/test/java/org/apache/geronimo/arthur/impl/nativeimage/CommandGeneratorTest.java
+++ b/arthur-impl/src/test/java/org/apache/geronimo/arthur/impl/nativeimage/CommandGeneratorTest.java
@@ -50,7 +50,6 @@
         configuration.setEnforceMaxRuntimeCompileMethods(false);
         configuration.setAddAllCharsets(false);
         configuration.setReportExceptionStackTraces(false);
-        configuration.setTraceClassInitialization(false);
         configuration.setPrintClassInitialization(false);
         configuration.setBuildStaticImage(false);
         configuration.setAllowIncompleteClasspath(false);
@@ -94,7 +93,6 @@
         filledConfig.setEnforceMaxRuntimeCompileMethods(false);
         filledConfig.setAddAllCharsets(false);
         filledConfig.setReportExceptionStackTraces(false);
-        filledConfig.setTraceClassInitialization(false);
         filledConfig.setPrintClassInitialization(true);
         filledConfig.setFallbackMode(ArthurNativeImageConfiguration.FallbackMode.auto);
         filledConfig.setBuildStaticImage(false);
@@ -113,7 +111,6 @@
                                 "native-image", "-classpath",
                                 "-H:MaxRuntimeCompileMethods=1000", "-H:+EnforceMaxRuntimeCompileMethods",
                                 "-H:+AddAllCharsets", "-H:+ReportExceptionStackTraces",
-                                "-H:+TraceClassInitialization",
                                 "--no-fallback", "--static", "--allow-incomplete-classpath",
                                 "--report-unsupported-elements-at-runtime", "--enable-all-security-services",
                                 "--no-server", "main", "main.graal.exec")),
@@ -123,7 +120,6 @@
                                 "native-image", "-classpath", "foo" + File.pathSeparator + "bar",
                                 "-H:MaxRuntimeCompileMethods=1000", "-H:+EnforceMaxRuntimeCompileMethods",
                                 "-H:+AddAllCharsets", "-H:+ReportExceptionStackTraces",
-                                "-H:+TraceClassInitialization",
                                 "--no-fallback", "--static", "--allow-incomplete-classpath",
                                 "--report-unsupported-elements-at-runtime", "--enable-all-security-services",
                                 "--no-server", "main", "main.graal.exec")),
diff --git a/arthur-maven-plugin/src/main/java/org/apache/geronimo/arthur/maven/mojo/ArthurMojo.java b/arthur-maven-plugin/src/main/java/org/apache/geronimo/arthur/maven/mojo/ArthurMojo.java
index fe38a9c..89f08c6 100644
--- a/arthur-maven-plugin/src/main/java/org/apache/geronimo/arthur/maven/mojo/ArthurMojo.java
+++ b/arthur-maven-plugin/src/main/java/org/apache/geronimo/arthur/maven/mojo/ArthurMojo.java
@@ -79,7 +79,7 @@
      * In case Graal must be downloaded to get native-image, which version to download.
      * It contains the graal version and can be suffixed by the graal java version prefixed with "r" (as on sdkman).
      */
-    @Parameter(property = "arthur.graalVersion", defaultValue = "20.1.0.r8")
+    @Parameter(property = "arthur.graalVersion", defaultValue = "20.3.0.r8")
     private String graalVersion;
 
     /**
diff --git a/arthur-maven-plugin/src/main/java/org/apache/geronimo/arthur/maven/mojo/NativeImageMojo.java b/arthur-maven-plugin/src/main/java/org/apache/geronimo/arthur/maven/mojo/NativeImageMojo.java
index 7a4d712..18bd42f 100644
--- a/arthur-maven-plugin/src/main/java/org/apache/geronimo/arthur/maven/mojo/NativeImageMojo.java
+++ b/arthur-maven-plugin/src/main/java/org/apache/geronimo/arthur/maven/mojo/NativeImageMojo.java
@@ -165,12 +165,6 @@
     private boolean reportExceptionStackTraces;
 
     /**
-     * Should class initialition be tracked.
-     */
-    @Parameter(property = "arthur.traceClassInitialization", defaultValue = "true")
-    private boolean traceClassInitialization;
-
-    /**
      * Should initialiation of classes be printed - mainly for debug purposes.
      */
     @Parameter(property = "arthur.printClassInitialization", defaultValue = "false")
diff --git a/documentation/pom.xml b/documentation/pom.xml
index d58bda7..ab41da1 100644
--- a/documentation/pom.xml
+++ b/documentation/pom.xml
@@ -52,7 +52,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-    <!-- NEEDS_WINEGROWER_RELEASE deactivated until the release
     <dependency>
       <groupId>${project.groupId}.knights</groupId>
       <artifactId>winegrower-knight</artifactId>
@@ -64,7 +63,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-    -->
 
     <!-- generation dependencies -->
     <dependency>
diff --git a/integration-test/pom.xml b/integration-test/pom.xml
index f38c149..f59c179 100644
--- a/integration-test/pom.xml
+++ b/integration-test/pom.xml
@@ -39,7 +39,7 @@
     <dependency>
       <groupId>org.testcontainers</groupId>
       <artifactId>junit-jupiter</artifactId>
-      <version>1.12.3</version>
+      <version>1.14.3</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -79,14 +79,12 @@
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    <!-- NEEDS_WINEGROWER_RELEASE commented until winegrower is released
     <dependency>
       <groupId>${project.groupId}.knights</groupId>
       <artifactId>winegrower-knight</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
-    -->
   </dependencies>
 
   <build>
diff --git a/integration-test/src/test/java/org/apache/geronimo/arthur/integrationtests/MavenTest.java b/integration-test/src/test/java/org/apache/geronimo/arthur/integrationtests/MavenTest.java
index 5bca5d7..65cab08 100644
--- a/integration-test/src/test/java/org/apache/geronimo/arthur/integrationtests/MavenTest.java
+++ b/integration-test/src/test/java/org/apache/geronimo/arthur/integrationtests/MavenTest.java
@@ -48,7 +48,6 @@
 
 
     @Test
-    @EnabledIfSystemProperty(named = "winegrower.enabled", matches = "NEEDS_WINEGROWER_RELEASE") // deactivated until the release
     @Spec(expectedOutput = "Starting org.apache.geronimo.arthur.integrationtests.Application")
     void scr() {}
 
diff --git a/integration-test/src/test/java/org/apache/geronimo/arthur/integrationtests/container/MavenContainer.java b/integration-test/src/test/java/org/apache/geronimo/arthur/integrationtests/container/MavenContainer.java
index 8363f21..635bbb5 100644
--- a/integration-test/src/test/java/org/apache/geronimo/arthur/integrationtests/container/MavenContainer.java
+++ b/integration-test/src/test/java/org/apache/geronimo/arthur/integrationtests/container/MavenContainer.java
@@ -16,10 +16,12 @@
  */
 package org.apache.geronimo.arthur.integrationtests.container;
 
+import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
 
 import com.github.dockerjava.api.DockerClient;
+import com.github.dockerjava.api.model.Image;
 import org.testcontainers.DockerClientFactory;
 import org.testcontainers.containers.GenericContainer;
 import org.testcontainers.images.builder.ImageFromDockerfile;
@@ -46,14 +48,16 @@
     // we can run apt update && apt install -y gcc libc6-dev zlib1g-dev in start() but it is slow so we cache it through an image
     // note: we don't clean the image to be able to reuse it and speed up integration-tests, use -Darthur.container.maven.deleteOnExit=true to auto clean it
     private static String getOrCreateAutoBaseImage() {
-        final String fromImage = System.getProperty("arthur.container.maven.baseimage", "maven:3.6.2-jdk-8-slim");
+        final String fromImage = System.getProperty("arthur.container.maven.baseimage", "maven:3.6.3-jdk-8-slim");
         // creating a tag from the source image to ensure we can have multiple test versions (maven/jdk matrix)
         final String tag = fromImage.split(":")[1];
         final String targetImage = "apache/geronimo/arthur/maven-test-base:" + tag;
 
         final DockerClient client = DockerClientFactory.instance().client();
         try {
-            if (!client.listImagesCmd().withImageNameFilter(targetImage).exec().isEmpty()) {
+            // note that docker daemon can ignore filter parameter so let's check it exactly
+            final List<Image> images = client.listImagesCmd().withImageNameFilter(targetImage).exec();
+            if (images.size() == 1) {
                 log.info("Found '{}' image, reusing it", targetImage);
                 return targetImage;
             }
diff --git a/integration-test/src/test/resources/integration-tests/scr/pom.xml b/integration-test/src/test/resources/integration-tests/scr/pom.xml
index 0078282..c835d3c 100644
--- a/integration-test/src/test/resources/integration-tests/scr/pom.xml
+++ b/integration-test/src/test/resources/integration-tests/scr/pom.xml
@@ -117,7 +117,7 @@
       <plugin>
         <groupId>org.apache.geronimo.arthur</groupId>
         <artifactId>arthur-maven-plugin</artifactId>
-        <version>1.0.0-SNAPSHOT</version>
+        <version>${project.version}</version>
         <configuration>
           <main>org.apache.geronimo.arthur.integrationtests.ScrMain</main>
           <graalExtensions>
diff --git a/knights/jsch-knight/src/test/java/org/apache/geronimo/arthur/knight/jsch/JschExtensionTest.java b/knights/jsch-knight/src/test/java/org/apache/geronimo/arthur/knight/jsch/JschExtensionTest.java
index 4da6c05..3458786 100644
--- a/knights/jsch-knight/src/test/java/org/apache/geronimo/arthur/knight/jsch/JschExtensionTest.java
+++ b/knights/jsch-knight/src/test/java/org/apache/geronimo/arthur/knight/jsch/JschExtensionTest.java
@@ -46,53 +46,55 @@
         final Collection<ClassReflectionModel> reflection = context.getReflections();
         assertEquals(48, reflection.size());
         reflection.stream().map(ClassReflectionModel::getAllDeclaredConstructors).forEach(Assertions::assertTrue);
-        assertEquals("com.jcraft.jsch.jce.HMACSHA1\n" +
-                "com.jcraft.jsch.jce.AES192CTR\n" +
-                "com.jcraft.jsch.DHEC384\n" +
-                "com.jcraft.jsch.jce.DH\n" +
-                "com.jcraft.jsch.jce.SHA1\n" +
-                "com.jcraft.jsch.jce.SignatureDSA\n" +
-                "com.jcraft.jsch.jce.AES256CTR\n" +
-                "com.jcraft.jsch.jgss.GSSContextKrb5\n" +
-                "com.jcraft.jsch.jce.AES192CBC\n" +
-                "com.jcraft.jsch.jce.PBKDF\n" +
-                "com.jcraft.jsch.jce.HMACMD596\n" +
-                "com.jcraft.jsch.jce.KeyPairGenDSA\n" +
-                "com.jcraft.jsch.jce.MD5\n" +
-                "com.jcraft.jsch.jce.SignatureECDSA521\n" +
-                "com.jcraft.jsch.DHG14\n" +
-                "com.jcraft.jsch.jce.ARCFOUR\n" +
-                "com.jcraft.jsch.jce.KeyPairGenRSA\n" +
+        assertEquals("" +
+                "com.jcraft.jsch.CipherNone\n" +
                 "com.jcraft.jsch.DHEC256\n" +
-                "com.jcraft.jsch.jce.HMACMD5\n" +
-                "com.jcraft.jsch.jce.HMACSHA196\n" +
-                "com.jcraft.jsch.UserAuthPublicKey\n" +
-                "com.jcraft.jsch.jce.AES128CTR\n" +
-                "com.jcraft.jsch.jce.SignatureRSA\n" +
-                "com.jcraft.jsch.jce.SHA384\n" +
+                "com.jcraft.jsch.DHEC384\n" +
+                "com.jcraft.jsch.DHEC521\n" +
+                "com.jcraft.jsch.DHG1\n" +
+                "com.jcraft.jsch.DHG14\n" +
                 "com.jcraft.jsch.DHGEX\n" +
                 "com.jcraft.jsch.DHGEX256\n" +
-                "com.jcraft.jsch.jce.Random\n" +
-                "com.jcraft.jsch.DHG1\n" +
-                "com.jcraft.jsch.jce.BlowfishCBC\n" +
-                "com.jcraft.jsch.jce.SignatureECDSA384\n" +
+                "com.jcraft.jsch.UserAuthGSSAPIWithMIC\n" +
+                "com.jcraft.jsch.UserAuthKeyboardInteractive\n" +
                 "com.jcraft.jsch.UserAuthNone\n" +
+                "com.jcraft.jsch.UserAuthPassword\n" +
+                "com.jcraft.jsch.UserAuthPublicKey\n" +
+                "com.jcraft.jsch.jce.AES128CBC\n" +
+                "com.jcraft.jsch.jce.AES128CTR\n" +
+                "com.jcraft.jsch.jce.AES192CBC\n" +
+                "com.jcraft.jsch.jce.AES192CTR\n" +
+                "com.jcraft.jsch.jce.AES256CBC\n" +
+                "com.jcraft.jsch.jce.AES256CTR\n" +
+                "com.jcraft.jsch.jce.ARCFOUR\n" +
                 "com.jcraft.jsch.jce.ARCFOUR128\n" +
                 "com.jcraft.jsch.jce.ARCFOUR256\n" +
-                "com.jcraft.jsch.UserAuthKeyboardInteractive\n" +
-                "com.jcraft.jsch.jce.SignatureECDSA256\n" +
-                "com.jcraft.jsch.jce.TripleDESCTR\n" +
-                "com.jcraft.jsch.jce.SHA512\n" +
-                "com.jcraft.jsch.DHEC521\n" +
-                "com.jcraft.jsch.UserAuthPassword\n" +
-                "com.jcraft.jsch.jce.SHA256\n" +
-                "com.jcraft.jsch.jce.KeyPairGenECDSA\n" +
-                "com.jcraft.jsch.jce.TripleDESCBC\n" +
-                "com.jcraft.jsch.CipherNone\n" +
-                "com.jcraft.jsch.jce.AES128CBC\n" +
-                "com.jcraft.jsch.jce.AES256CBC\n" +
+                "com.jcraft.jsch.jce.BlowfishCBC\n" +
+                "com.jcraft.jsch.jce.DH\n" +
                 "com.jcraft.jsch.jce.ECDHN\n" +
-                "com.jcraft.jsch.UserAuthGSSAPIWithMIC\n" +
-                "com.jcraft.jsch.jce.HMACSHA256", reflection.stream().map(ClassReflectionModel::getName).collect(joining("\n")));
+                "com.jcraft.jsch.jce.HMACMD5\n" +
+                "com.jcraft.jsch.jce.HMACMD596\n" +
+                "com.jcraft.jsch.jce.HMACSHA1\n" +
+                "com.jcraft.jsch.jce.HMACSHA196\n" +
+                "com.jcraft.jsch.jce.HMACSHA256\n" +
+                "com.jcraft.jsch.jce.KeyPairGenDSA\n" +
+                "com.jcraft.jsch.jce.KeyPairGenECDSA\n" +
+                "com.jcraft.jsch.jce.KeyPairGenRSA\n" +
+                "com.jcraft.jsch.jce.MD5\n" +
+                "com.jcraft.jsch.jce.PBKDF\n" +
+                "com.jcraft.jsch.jce.Random\n" +
+                "com.jcraft.jsch.jce.SHA1\n" +
+                "com.jcraft.jsch.jce.SHA256\n" +
+                "com.jcraft.jsch.jce.SHA384\n" +
+                "com.jcraft.jsch.jce.SHA512\n" +
+                "com.jcraft.jsch.jce.SignatureDSA\n" +
+                "com.jcraft.jsch.jce.SignatureECDSA256\n" +
+                "com.jcraft.jsch.jce.SignatureECDSA384\n" +
+                "com.jcraft.jsch.jce.SignatureECDSA521\n" +
+                "com.jcraft.jsch.jce.SignatureRSA\n" +
+                "com.jcraft.jsch.jce.TripleDESCBC\n" +
+                "com.jcraft.jsch.jce.TripleDESCTR\n" +
+                "com.jcraft.jsch.jgss.GSSContextKrb5",
+                reflection.stream().map(ClassReflectionModel::getName).sorted().collect(joining("\n")));
     }
 }
diff --git a/knights/openwebbeans-knight/pom.xml b/knights/openwebbeans-knight/pom.xml
new file mode 100644
index 0000000..c38b978
--- /dev/null
+++ b/knights/openwebbeans-knight/pom.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <parent>
+    <artifactId>knights</artifactId>
+    <groupId>org.apache.geronimo.arthur.knights</groupId>
+    <version>1.0.1-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>openwebbeans-knight</artifactId>
+  <name>Arthur :: Knights :: OpenWebBeans</name>
+
+  <properties>
+    <geronimo-arthur.shortname>knight.openwebbeans</geronimo-arthur.shortname>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.arthur</groupId>
+      <artifactId>arthur-spi</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-jcdi_2.0_spec</artifactId>
+      <version>1.3</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-el_2.2_spec</artifactId>
+      <version>1.1</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-annotation_1.3_spec</artifactId>
+      <version>1.3</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-atinject_1.0_spec</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-interceptor_1.2_spec</artifactId>
+      <version>1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.openwebbeans</groupId>
+      <artifactId>openwebbeans-se</artifactId>
+      <version>2.0.20</version>
+    </dependency>
+    <dependency>
+      <groupId>org.graalvm.nativeimage</groupId>
+      <artifactId>svm</artifactId>
+      <version>${graalvm.version}</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+</project>
\ No newline at end of file
diff --git a/knights/openwebbeans-knight/src/main/java/org/apache/geronimo/arthur/knight/openwebbeans/OpenWebBeansExtension.java b/knights/openwebbeans-knight/src/main/java/org/apache/geronimo/arthur/knight/openwebbeans/OpenWebBeansExtension.java
new file mode 100644
index 0000000..61ef51e
--- /dev/null
+++ b/knights/openwebbeans-knight/src/main/java/org/apache/geronimo/arthur/knight/openwebbeans/OpenWebBeansExtension.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.arthur.knight.openwebbeans;
+
+import org.apache.geronimo.arthur.spi.ArthurExtension;
+
+public class OpenWebBeansExtension implements ArthurExtension {
+    @Override
+    public void execute(final Context context) {
+
+    }
+}
diff --git a/knights/pom.xml b/knights/pom.xml
index 353743b..89e31c1 100644
--- a/knights/pom.xml
+++ b/knights/pom.xml
@@ -30,9 +30,8 @@
 
   <modules>
     <module>jsch-knight</module>
-    <!-- NEEDS_WINEGROWER_RELEASE deactivated until the release
     <module>winegrower-knight</module>
-    -->
+    <module>openwebbeans-knight</module>
   </modules>
 
   <dependencies>
diff --git a/knights/winegrower-knight/pom.xml b/knights/winegrower-knight/pom.xml
index fa3b5db..63c31bd 100644
--- a/knights/winegrower-knight/pom.xml
+++ b/knights/winegrower-knight/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.geronimo.arthur.knights</groupId>
     <artifactId>knights</artifactId>
-    <version>1.0.0-SNAPSHOT</version>
+    <version>1.0.1-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
diff --git a/pom.xml b/pom.xml
index 098c7c3..0c2ccfa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,8 +40,8 @@
 
     <!-- knights -->
     <jsch.version>0.1.55</jsch.version>
-    <graalvm.version>19.3.0</graalvm.version>
-    <winegrower.version>1.0-SNAPSHOT</winegrower.version> <!-- search for NEEDS_WINEGROWER_RELEASE once released -->
+    <graalvm.version>20.3.0</graalvm.version>
+    <winegrower.version>1.0.0</winegrower.version>
 
     <!-- plugin versions/confs -->
     <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
@@ -52,6 +52,7 @@
     <geronimo-arthur.shortname>${project.artifactId}</geronimo-arthur.shortname>
     <geronimo-arthur.Automatic-Module-Name>${project.groupId}.${geronimo-arthur.shortname}
     </geronimo-arthur.Automatic-Module-Name>
+    <junit.version>5.7.0</junit.version>
   </properties>
 
   <modules>
@@ -79,14 +80,20 @@
     <dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
-      <version>1.18.4</version>
+      <version>1.18.16</version>
       <scope>provided</scope>
     </dependency>
 
+    <dependency> <!-- not strictly needed for compile classpath but surefire 3M5 requires its presence -->
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <version>${junit.version}</version>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>org.junit.jupiter</groupId>
       <artifactId>junit-jupiter</artifactId>
-      <version>5.5.2</version>
+      <version>${junit.version}</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -107,12 +114,12 @@
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-compress</artifactId>
-        <version>1.19</version>
+        <version>1.20</version>
       </dependency>
       <dependency>
         <groupId>org.apache.xbean</groupId>
         <artifactId>xbean-finder-shaded</artifactId>
-        <version>4.15</version>
+        <version>4.18</version>
         <exclusions>
           <exclusion>
             <groupId>org.apache.xbean</groupId>
@@ -123,17 +130,17 @@
       <dependency>
         <groupId>org.apache.geronimo.specs</groupId>
         <artifactId>geronimo-json_1.1_spec</artifactId>
-        <version>1.2</version>
+        <version>1.5</version>
       </dependency>
       <dependency>
         <groupId>org.apache.geronimo.specs</groupId>
         <artifactId>geronimo-jsonb_1.0_spec</artifactId>
-        <version>1.2</version>
+        <version>1.4</version>
       </dependency>
       <dependency>
         <groupId>org.apache.johnzon</groupId>
         <artifactId>johnzon-jsonb</artifactId>
-        <version>1.2.1</version>
+        <version>1.2.9</version>
       </dependency>
       <dependency>
         <groupId>org.slf4j</groupId>
@@ -184,7 +191,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
-        <version>3.0.0-M3</version>
+        <version>3.0.0-M5</version>
         <configuration>
           <forkCount>1</forkCount>
           <reuseForks>true</reuseForks>
