diff --git a/integration-tests/app-groovy/pom.xml b/integration-tests/app-groovy/pom.xml
index a63543d..8f09343 100644
--- a/integration-tests/app-groovy/pom.xml
+++ b/integration-tests/app-groovy/pom.xml
@@ -52,7 +52,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.7.0</version>
+        <version>3.8.1</version>
         <configuration>
           <compilerId>groovy-eclipse-compiler</compilerId>
         </configuration>
diff --git a/meecrowave-core/pom.xml b/meecrowave-core/pom.xml
index 48726f1..ffcbc94 100644
--- a/meecrowave-core/pom.xml
+++ b/meecrowave-core/pom.xml
@@ -368,7 +368,7 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.8.0</version>
+        <version>3.8.1</version>
         <executions>
           <execution>
             <id>log4j-plugin-processor</id>
diff --git a/meecrowave-core/src/main/java/org/apache/meecrowave/openwebbeans/KnownJarsFilter.java b/meecrowave-core/src/main/java/org/apache/meecrowave/openwebbeans/KnownJarsFilter.java
index 9153d90..8b69090 100644
--- a/meecrowave-core/src/main/java/org/apache/meecrowave/openwebbeans/KnownJarsFilter.java
+++ b/meecrowave-core/src/main/java/org/apache/meecrowave/openwebbeans/KnownJarsFilter.java
@@ -32,6 +32,7 @@
 public class KnownJarsFilter implements JarScanFilter {
     private final Collection<String> forceIncludes = new HashSet<String>() {{
         add("cxf-integration-cdi");
+        add("geronimo-jcache-simple");
     }};
 
     private final Collection<String> excludes = new HashSet<String>() {{
diff --git a/meecrowave-doc/pom.xml b/meecrowave-doc/pom.xml
index a9c4d0f..563da65 100644
--- a/meecrowave-doc/pom.xml
+++ b/meecrowave-doc/pom.xml
@@ -43,14 +43,35 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.asciidoctor</groupId>
-      <artifactId>asciidoctorj-pdf</artifactId>
-      <version>1.5.0-alpha.16</version>
+      <groupId>org.jruby</groupId>
+      <artifactId>jruby</artifactId>
+      <version>9.2.13.0</version>
     </dependency>
     <dependency>
       <groupId>org.asciidoctor</groupId>
       <artifactId>asciidoctorj</artifactId>
-      <version>1.5.8.1</version>
+      <version>2.2.0</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jruby</groupId>
+          <artifactId>jruby</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.asciidoctor</groupId>
+      <artifactId>asciidoctorj-pdf</artifactId>
+      <version>1.5.0-alpha.16</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jruby</groupId>
+          <artifactId>jruby-complete</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.asciidoctor</groupId>
+          <artifactId>asciidoctorj</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.apache.tomee</groupId>
@@ -109,7 +130,17 @@
     <dependency>
       <groupId>org.jbake</groupId>
       <artifactId>jbake-core</artifactId>
-      <version>2.6.4</version>
+      <version>2.6.5</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-configuration</groupId>
+      <artifactId>commons-configuration</artifactId>
+      <version>1.10</version>
+    </dependency>
+    <dependency>
+      <groupId>com.orientechnologies</groupId>
+      <artifactId>orientdb-core</artifactId>
+      <version>3.0.30</version>
     </dependency>
     <dependency>
       <groupId>org.codehaus.groovy</groupId>
diff --git a/meecrowave-doc/src/main/java/org/apache/meecrowave/doc/JBake.java b/meecrowave-doc/src/main/java/org/apache/meecrowave/doc/JBake.java
index 75801f9..9746ef4 100755
--- a/meecrowave-doc/src/main/java/org/apache/meecrowave/doc/JBake.java
+++ b/meecrowave-doc/src/main/java/org/apache/meecrowave/doc/JBake.java
@@ -59,6 +59,7 @@
 import org.jbake.app.configuration.DefaultJBakeConfiguration;
 
 import com.orientechnologies.orient.core.Orient;
+import org.jbake.app.configuration.JBakeConfigurationFactory;
 
 public class JBake {
     private JBake() {
@@ -115,9 +116,7 @@
             System.out.println("Building Meecrowave website in " + destination);
             final Orient orient = Orient.instance();
             try {
-                orient.startup();
-
-                final Oven oven = new Oven(source, destination, new CompositeConfiguration() {{
+                final Oven oven = new Oven(new JBakeConfigurationFactory().createDefaultJbakeConfiguration(source, destination, new CompositeConfiguration() {{
                     final CompositeConfiguration config = new CompositeConfiguration();
                     config.addConfiguration(new MapConfiguration(new HashMap<String, Object>() {{
                         put("asciidoctor.attributes", new ArrayList<String>() {{
@@ -129,8 +128,7 @@
                     config.addConfiguration(DefaultJBakeConfiguration.class.cast(
                             new ConfigUtil().loadConfig(source)).getCompositeConfiguration());
                     addConfiguration(config);
-                }}, true);
-                oven.setupPaths();
+                }}, true));
 
                 System.out.println("  > baking");
                 oven.bake();
@@ -175,7 +173,7 @@
                         try {
                             sleep(TimeUnit.SECONDS.toMillis(1));
                         } catch (final InterruptedException e) {
-                            Thread.interrupted();
+                            Thread.currentThread().interrupt();
                             break;
                         }
                     }
@@ -212,7 +210,7 @@
                             }
                             key.reset();
                         } catch (final InterruptedException e) {
-                            Thread.interrupted();
+                            Thread.currentThread().interrupt();
                             run.compareAndSet(true, false);
                         } catch (final ClosedWatchServiceException cwse) {
                             if (!run.get()) {
@@ -233,7 +231,7 @@
                     try {
                         thread.join();
                     } catch (final InterruptedException e) {
-                        Thread.interrupted();
+                        Thread.currentThread().interrupt();
                     }
                 });
                 try {
diff --git a/meecrowave-doc/src/main/jbake/content/meecrowave-oauth2/index.adoc b/meecrowave-doc/src/main/jbake/content/meecrowave-oauth2/index.adoc
index 645f631..4bbea58 100755
--- a/meecrowave-doc/src/main/jbake/content/meecrowave-oauth2/index.adoc
+++ b/meecrowave-doc/src/main/jbake/content/meecrowave-oauth2/index.adoc
@@ -20,6 +20,17 @@
 </dependency>
 ----
 
+Or to not get JPA/JCache implementations:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.meecrowave</groupId>
+  <artifactId>meecrowave-oauth2-minimal</artifactId>
+  <version>${meecrowave.version}</version>
+</dependency>
+----
+
 A small OAuth2 server based on CXF implementation.
 
 See http://cxf.apache.org/docs/jax-rs-oauth2.html for more details.
diff --git a/meecrowave-proxy/pom.xml b/meecrowave-proxy/pom.xml
index 0de91ae..71d6026 100644
--- a/meecrowave-proxy/pom.xml
+++ b/meecrowave-proxy/pom.xml
@@ -51,7 +51,12 @@
       <version>${junit.version}</version>
       <scope>test</scope>
     </dependency>
-
+    <dependency> <!-- for multiparttest on java > 8 -->
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-activation_1.1_spec</artifactId>
+      <version>1.1</version>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>org.apache.meecrowave</groupId>
       <artifactId>meecrowave-junit</artifactId>
