diff --git a/demos/jaxrs/pom.xml b/demos/jaxrs/pom.xml
index df0ed16..a48ec8e 100644
--- a/demos/jaxrs/pom.xml
+++ b/demos/jaxrs/pom.xml
@@ -33,11 +33,6 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>jakarta.servlet</groupId>
-            <artifactId>jakarta.servlet-api</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
             <groupId>jakarta.json</groupId>
             <artifactId>jakarta.json-api</artifactId>
             <scope>provided</scope>
diff --git a/demos/pom.xml b/demos/pom.xml
index 14eb037..a7b8c44 100644
--- a/demos/pom.xml
+++ b/demos/pom.xml
@@ -37,11 +37,6 @@
             </activation>
             <dependencies>
                 <dependency>
-                    <groupId>jakarta.servlet</groupId>
-                    <artifactId>jakarta.servlet-api</artifactId>
-                    <scope>provided</scope>
-                </dependency>
-                <dependency>
                     <groupId>jakarta.json</groupId>
                     <artifactId>jakarta.json-api</artifactId>
                     <scope>provided</scope>
diff --git a/demos/servlet/src/main/java/org/glassfish/jsondemos/servlet/ArrayServlet.java b/demos/servlet/src/main/java/org/glassfish/jsondemos/servlet/ArrayServlet.java
index 7bbbe5f..9cac18f 100644
--- a/demos/servlet/src/main/java/org/glassfish/jsondemos/servlet/ArrayServlet.java
+++ b/demos/servlet/src/main/java/org/glassfish/jsondemos/servlet/ArrayServlet.java
@@ -10,12 +10,19 @@
 
 package org.glassfish.jsondemos.servlet;
 
-import jakarta.json.*;
-import javax.servlet.*;
-import javax.servlet.annotation.WebServlet;
-import javax.servlet.http.*;
 import java.io.IOException;
 
+import jakarta.json.Json;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonBuilderFactory;
+import jakarta.json.JsonWriter;
+import jakarta.json.JsonWriterFactory;
+
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
 /**
  * Writes a JsonArray using HttpServletResponse#getWriter
  * http://localhost:8080/jsondemos-servlet/array
diff --git a/gf/customprovider/src/main/java/org/glassfish/json/customprovider/TestServlet.java b/gf/customprovider/src/main/java/org/glassfish/json/customprovider/TestServlet.java
index 9a3c1c0..38bd1d4 100644
--- a/gf/customprovider/src/main/java/org/glassfish/json/customprovider/TestServlet.java
+++ b/gf/customprovider/src/main/java/org/glassfish/json/customprovider/TestServlet.java
@@ -16,13 +16,18 @@
 
 package org.glassfish.json.customprovider;
 
-import javax.servlet.annotation.*;
-import javax.servlet.http.*;
-import javax.servlet.*;
 import java.io.IOException;
-import jakarta.json.*;
-import jakarta.json.stream.*;
-import java.io.*;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+
+import jakarta.servlet.ServletException;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import jakarta.json.Json;
+import jakarta.json.stream.JsonGenerator;
 
 /**
  * @author Jitendra Kotamraju
@@ -30,19 +35,20 @@
 @WebServlet("/json")
 public class TestServlet extends HttpServlet {
 
+    @Override
     public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException {
         try {
-			res.setStatus(200);
-			res.setContentType("application/json");
-			OutputStream os = res.getOutputStream();
-			JsonGenerator generator = Json.createGenerator(new OutputStreamWriter(os));
+            res.setStatus(200);
+            res.setContentType("application/json");
+            OutputStream os = res.getOutputStream();
+            JsonGenerator generator = Json.createGenerator(new OutputStreamWriter(os));
             if (!(generator instanceof TestGenerator)) {
                 throw new RuntimeException("MyGenerator is not picked up");
             }
             generator.writeStartArray().writeEnd();
             generator.close();
-			os.close();
-        } catch(IOException ioe) {
+            os.close();
+        } catch (IOException ioe) {
             throw new ServletException(ioe);
         }
     }
diff --git a/gf/defaultprovider/src/main/java/org/glassfish/json/defaultprovider/TestServlet.java b/gf/defaultprovider/src/main/java/org/glassfish/json/defaultprovider/TestServlet.java
index 0075497..ac58dd5 100644
--- a/gf/defaultprovider/src/main/java/org/glassfish/json/defaultprovider/TestServlet.java
+++ b/gf/defaultprovider/src/main/java/org/glassfish/json/defaultprovider/TestServlet.java
@@ -16,9 +16,9 @@
 
 package org.glassfish.json.defaultprovider;
 
-import javax.servlet.annotation.*;
-import javax.servlet.http.*;
-import javax.servlet.*;
+import jakarta.servlet.annotation.*;
+import jakarta.servlet.http.*;
+import jakarta.servlet.*;
 import java.io.IOException;
 import jakarta.json.*;
 import jakarta.json.stream.*;
@@ -30,12 +30,13 @@
 @WebServlet("/json")
 public class TestServlet extends HttpServlet {
 
+    @Override
     public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException {
         try {
-			res.setStatus(200);
-			res.setContentType("application/json");
-			OutputStream os = res.getOutputStream();
-			JsonGenerator generator = Json.createGenerator(os);
+            res.setStatus(200);
+            res.setContentType("application/json");
+            OutputStream os = res.getOutputStream();
+            JsonGenerator generator = Json.createGenerator(os);
             generator.writeStartArray().writeEnd();
             generator.close();
         } catch(IOException ioe) {
diff --git a/pom.xml b/pom.xml
index 2592f0f..0eff9bf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -393,7 +393,7 @@
                     <dependency>
                         <groupId>jakarta.servlet</groupId>
                         <artifactId>jakarta.servlet-api</artifactId>
-                        <version>4.0.2</version>
+                        <version>5.0.0-M1</version>
                     </dependency>
                 </dependencies>
             </dependencyManagement>
@@ -407,7 +407,10 @@
                         <plugin>
                             <groupId>org.apache.maven.plugins</groupId>
                             <artifactId>maven-war-plugin</artifactId>
-                            <version>3.2.1</version>
+                            <version>3.3.0</version>
+                            <configuration>
+                                <failOnMissingWebXml>false</failOnMissingWebXml>
+                            </configuration>
                         </plugin>
                         <plugin>
                             <groupId>org.codehaus.mojo</groupId>
