diff --git a/jackrabbit-jcr-server-jakarta/pom.xml b/jackrabbit-jcr-server-jakarta/pom.xml
index a8144bdce..aab0bf791 100644
--- a/jackrabbit-jcr-server-jakarta/pom.xml
+++ b/jackrabbit-jcr-server-jakarta/pom.xml
@@ -96,6 +96,11 @@
       <artifactId>jackrabbit-webdav-jakarta</artifactId>
       <version>${project.version}</version>
     </dependency>
+    <dependency>
+      <groupId>org.apache.tika</groupId>
+      <artifactId>tika-core</artifactId>
+      <version>${tika.jakarta.version}</version>
+    </dependency>
     <dependency>
       <groupId>jakarta.servlet</groupId>
       <artifactId>jakarta.servlet-api</artifactId>
diff --git a/jackrabbit-parent/pom.xml b/jackrabbit-parent/pom.xml
index 2233ab9ee..1101c97af 100644
--- a/jackrabbit-parent/pom.xml
+++ b/jackrabbit-parent/pom.xml
@@ -51,7 +51,8 @@
     <!-- OAK version used in componenents that *use* oak-jackrabbit-api -->
     <oak-jackrabbit-api.version.used>1.22.14</oak-jackrabbit-api.version.used>
     <jetty.version>9.2.30.v20200428</jetty.version>
-    <tika.version>2.7.0</tika.version>
+    <tika.version>2.9.0</tika.version>
+    <tika.jakarta.version>3.0.0-SNAPSHOT</tika.jakarta.version>
     <project.reporting.outputEncoding>${project.build.sourceEncoding}</project.reporting.outputEncoding>
     <slf4j.api.version>1.7.36</slf4j.api.version>
     <slf4j.version>1.7.36</slf4j.version> <!-- sync with logback version -->
diff --git a/jackrabbit-webapp-jakarta/pom.xml b/jackrabbit-webapp-jakarta/pom.xml
index 0a85da68d..ad42ab869 100644
--- a/jackrabbit-webapp-jakarta/pom.xml
+++ b/jackrabbit-webapp-jakarta/pom.xml
@@ -30,11 +30,69 @@
   </properties>
   <build>
     <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>get-webapp</id>
+            <phase>process-resources</phase>
+            <goals>
+              <goal>unpack</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>${project.build.directory}/webapp</outputDirectory>
+              <artifactItems>
+                <artifactItem>
+                  <groupId>org.apache.jackrabbit</groupId>
+                  <artifactId>jackrabbit-webapp</artifactId>
+                  <version>${project.version}</version>
+                  <type>war</type>
+                </artifactItem>
+              </artifactItems>
+              <excludes>**/jackrabbit-jcr-server*, **/jackrabbit-jcr-servlet*, **/jackrabbit-webdav*, **/jaxb-runtime*, **/tika*, **/bcmail*</excludes>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
       <plugin>
         <artifactId>maven-war-plugin</artifactId>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>exploded</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>default-war</id>
+            <goals>
+              <goal>war</goal>
+            </goals>
+            <configuration>
+              <skip>true</skip>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>copy-webapp</id>
+            <phase>package</phase>
+            <configuration>
+              <target>
+                <copy todir="${project.build.directory}/${project.build.finalName}"
+                    overwrite="true" force="true">
+                  <fileset dir="${project.build.directory}/webapp" />
+                </copy>
+              </target>
+            </configuration>
+            <goals>
+              <goal>run</goal>
+            </goals>
+          </execution>
+        </executions>
       </plugin>
       <plugin>
         <groupId>org.eclipse.transformer</groupId>
@@ -48,17 +106,31 @@
         </configuration>
         <executions>
           <execution>
-            <id>default-war</id>
+            <id>transform-war</id>
             <goals>
-              <goal>jar</goal>
+              <goal>transform</goal>
             </goals>
             <configuration>
-              <artifact>
-                <groupId>org.apache.jackrabbit</groupId>
-                <artifactId>jackrabbit-webapp</artifactId>
-                <version>${project.version}</version>
-              </artifact>
+              <transformDirectory>${project.build.directory}/${project.build.finalName}</transformDirectory>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>pack-wer</id>
+            <phase>package</phase>
+            <configuration>
+              <target>
+                <war destfile="${project.build.directory}/${project.build.finalName}.war"
+                    basedir="${project.build.directory}/${project.build.finalName}" />
+              </target>
             </configuration>
+            <goals>
+              <goal>run</goal>
+            </goals>
           </execution>
         </executions>
       </plugin>
@@ -112,43 +184,44 @@
       <version>${project.version}</version>
     </dependency>
     <dependency>
+      <groupId>org.apache.tika</groupId>
+      <artifactId>tika-core</artifactId>
+      <version>${tika.jakarta.version}</version>
+     </dependency>
+    <dependency>
+      <groupId>org.apache.tika</groupId>
+      <artifactId>tika-parsers-standard-package</artifactId>
+      <version>${tika.jakarta.version}</version>
+     </dependency>
+     <dependency>
       <groupId>org.apache.tomcat.embed</groupId>
       <artifactId>tomcat-embed-core</artifactId>
       <version>${tomcat.version}</version>
+      <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.tomcat.embed</groupId>
       <artifactId>tomcat-embed-jasper</artifactId>
       <version>${tomcat.version}</version>
+      <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.tomcat</groupId>
       <artifactId>tomcat-jasper</artifactId>
       <version>${tomcat.version}</version>
+      <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.tomcat</groupId>
       <artifactId>tomcat-jasper-el</artifactId>
       <version>${tomcat.version}</version>
+      <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.tomcat</groupId>
       <artifactId>tomcat-jsp-api</artifactId>
       <version>${tomcat.version}</version>
-    </dependency>
-    <dependency>
-     <groupId>org.apache.tika</groupId>
-     <artifactId>tika-parsers-standard-package</artifactId>
-     <exclusions>
-      <exclusion>
-       <groupId>org.bouncycastle</groupId>
-       <artifactId>bcmail-jdk15on</artifactId>
-      </exclusion>
-      <exclusion>
-       <groupId>org.bouncycastle</groupId>
-       <artifactId>bcprov-jdk15on</artifactId>
-      </exclusion>
-     </exclusions>
+      <scope>test</scope>
     </dependency>
   </dependencies>
 </project>
\ No newline at end of file
diff --git a/jackrabbit-webapp-jakarta/src/test/java/org/apache/jackrabbit/j2ee/TomcatIT.java b/jackrabbit-webapp-jakarta/src/test/java/org/apache/jackrabbit/j2ee/TomcatIT.java
index 0299a509a..d8ffeb5a4 100644
--- a/jackrabbit-webapp-jakarta/src/test/java/org/apache/jackrabbit/j2ee/TomcatIT.java
+++ b/jackrabbit-webapp-jakarta/src/test/java/org/apache/jackrabbit/j2ee/TomcatIT.java
@@ -26,15 +26,18 @@ import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
+import org.apache.catalina.Context;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.IOUtils;
+import org.apache.tomcat.util.scan.StandardJarScanner;
 import org.slf4j.bridge.SLF4JBridgeHandler;
 
 import com.gargoylesoftware.htmlunit.WebClient;
@@ -86,7 +89,9 @@ public class TomcatIT extends TestCase {
         tomcat.setHostname(url.getHost());
         tomcat.setPort(url.getPort());
         tomcat.getConnector();
-        tomcat.addWebapp("", war.getAbsolutePath());
+
+        Context ctx = tomcat.addWebapp("", war.getAbsolutePath());
+        ((StandardJarScanner)ctx.getJarScanner()).setScanClassPath(false);
 
         tomcat.start();
 
@@ -96,6 +101,11 @@ public class TomcatIT extends TestCase {
     private File extractWarFile(File warFile) throws IOException{
         String fileBaseName = FilenameUtils.getBaseName(warFile.getName());
         Path destFolderPath = Paths.get(warFile.getParent(), fileBaseName);
+        if (java.nio.file.Files.exists(destFolderPath)) {
+            java.nio.file.Files.move(destFolderPath, destFolderPath.resolveSibling(destFolderPath.getFileName() + "_original"),
+                    StandardCopyOption.ATOMIC_MOVE,
+                    StandardCopyOption.REPLACE_EXISTING);
+        }
         if (!java.nio.file.Files.exists(destFolderPath)) {
 	        try (ZipFile zipFile = new ZipFile(warFile, ZipFile.OPEN_READ)){
 	            Enumeration<? extends ZipEntry> entries = zipFile.entries();
@@ -109,7 +119,7 @@ public class TomcatIT extends TestCase {
 	                        java.nio.file.Files.createDirectories(entryPath.getParent());
 	                        try (InputStream in = zipFile.getInputStream(entry)){
 	                        	try (OutputStream out = new FileOutputStream(entryPath.toFile())){
-	                        		IOUtils.copy(in, out);                          
+	                        		IOUtils.copy(in, out);
 	                            }
 	                        }
 	                    }
@@ -119,7 +129,7 @@ public class TomcatIT extends TestCase {
         }
         return destFolderPath.toFile();
     }
-    
+
     protected void mkdirs(File dir, String errorMessageFormat) {
     	if (dir.exists() && dir.isDirectory()) {
     		return;
@@ -129,7 +139,7 @@ public class TomcatIT extends TestCase {
         	throw new RuntimeException(String.format(errorMessageFormat, dir.getPath()));
         }
     }
-    
+
 	public void testTomcat() throws Exception {
         HtmlPage page = client.getPage(url);
         assertEquals("Content Repository Setup", page.getTitleText());
diff --git a/jackrabbit-webapp/src/test/java/org/apache/jackrabbit/j2ee/TomcatIT.java b/jackrabbit-webapp/src/test/java/org/apache/jackrabbit/j2ee/TomcatIT.java
index a54775817..c43e22eb3 100644
--- a/jackrabbit-webapp/src/test/java/org/apache/jackrabbit/j2ee/TomcatIT.java
+++ b/jackrabbit-webapp/src/test/java/org/apache/jackrabbit/j2ee/TomcatIT.java
@@ -25,8 +25,10 @@ import java.util.List;
 
 import junit.framework.TestCase;
 
+import org.apache.catalina.Context;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.commons.io.FileUtils;
+import org.apache.tomcat.util.scan.StandardJarScanner;
 import org.slf4j.bridge.SLF4JBridgeHandler;
 
 import com.gargoylesoftware.htmlunit.WebClient;
@@ -76,7 +78,8 @@ public class TomcatIT extends TestCase {
         tomcat.setHostname(url.getHost());
         tomcat.setPort(url.getPort());
 
-        tomcat.addWebapp("", war.getAbsolutePath());
+        Context ctx = tomcat.addWebapp("", war.getAbsolutePath());
+        ((StandardJarScanner)ctx.getJarScanner()).setScanClassPath(false);
 
         tomcat.start();
 
