diff --git a/src/main/java/org/apache/maven/plugins/ear/ApplicationXmlWriter.java b/src/main/java/org/apache/maven/plugins/ear/ApplicationXmlWriter.java
index 23f2806..285586f 100644
--- a/src/main/java/org/apache/maven/plugins/ear/ApplicationXmlWriter.java
+++ b/src/main/java/org/apache/maven/plugins/ear/ApplicationXmlWriter.java
@@ -82,6 +82,10 @@
             {
                 writer = initializeRootElementEight( w );
             }
+            else if ( JavaEEVersion.NINE.eq( version ) )
+            {
+                writer = initializeRootElementNine( w );
+            }
     
             // writer is still on root element, so we can still add this attribute
             if ( context.getApplicationId() != null )
@@ -270,4 +274,16 @@
         writer.addAttribute( "version", "8" );
         return writer;
     }
+
+    private XMLWriter initializeRootElementNine( Writer w )
+    {
+        XMLWriter writer = initializeXmlWriter( w, null );
+        writer.startElement( APPLICATION_ELEMENT );
+        writer.addAttribute( "xmlns", "https://jakarta.ee/xml/ns/jakartaee" );
+        writer.addAttribute( "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance" );
+        writer.addAttribute( "xsi:schemaLocation",
+            "https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/application_9.xsd" );
+        writer.addAttribute( "version", "9" );
+        return writer;
+    }
 }
diff --git a/src/main/java/org/apache/maven/plugins/ear/util/JavaEEVersion.java b/src/main/java/org/apache/maven/plugins/ear/util/JavaEEVersion.java
index c1d500f..2b3581e 100644
--- a/src/main/java/org/apache/maven/plugins/ear/util/JavaEEVersion.java
+++ b/src/main/java/org/apache/maven/plugins/ear/util/JavaEEVersion.java
@@ -43,6 +43,8 @@
     
     private static final String VERSION_8 = "8";
 
+    private static final String VERSION_9 = "9";
+
     private static final Map<String, JavaEEVersion> VERSION_MAP = new HashMap<String, JavaEEVersion>();
 
     /**
@@ -75,6 +77,11 @@
      */
     public static final JavaEEVersion EIGHT = new JavaEEVersion( Integer.valueOf( 5 ), VERSION_8 );
 
+    /**
+     * Represents the JakartaEE 9 version.
+     */
+    public static final JavaEEVersion NINE = new JavaEEVersion( Integer.valueOf( 6 ), VERSION_9 );
+
     private final Integer index;
 
     private final String version;
@@ -184,7 +191,8 @@
             || VERSION_5.equals( paramVersion ) 
             || VERSION_6.equals( paramVersion ) 
             || VERSION_7.equals( paramVersion )
-            || VERSION_8.equals( paramVersion );
+            || VERSION_8.equals( paramVersion )
+            || VERSION_9.equals( paramVersion );
         // @formatter:on
     }
 
diff --git a/src/test/java/org/apache/maven/plugins/ear/it/EarMojoIT.java b/src/test/java/org/apache/maven/plugins/ear/it/EarMojoIT.java
index f81623f..7d0469b 100644
--- a/src/test/java/org/apache/maven/plugins/ear/it/EarMojoIT.java
+++ b/src/test/java/org/apache/maven/plugins/ear/it/EarMojoIT.java
@@ -1300,4 +1300,13 @@
                     warModuleLibDir + rarLibrary
                 } } );
     }
+
+    /**
+     * Builds an EAR with deployment descriptor configuration for JakartaEE 9.
+     */
+    public void testProject099()
+            throws Exception
+    {
+        doTestProject( "project-099", new String[] { "eartest-ejb-sample-one-1.0.jar" } );
+    }
 }
diff --git a/src/test/resources/projects/project-099/expected-META-INF/application.xml b/src/test/resources/projects/project-099/expected-META-INF/application.xml
new file mode 100644
index 0000000..b849741
--- /dev/null
+++ b/src/test/resources/projects/project-099/expected-META-INF/application.xml
@@ -0,0 +1,26 @@
+<?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.
+-->
+<application xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/application_9.xsd" version="9">
+  <display-name>maven-ear-plugin-test-project-099</display-name>
+  <module>
+    <ejb>eartest-ejb-sample-one-1.0.jar</ejb>
+  </module>
+</application>
+
diff --git a/src/test/resources/projects/project-099/pom.xml b/src/test/resources/projects/project-099/pom.xml
new file mode 100644
index 0000000..afb56bb
--- /dev/null
+++ b/src/test/resources/projects/project-099/pom.xml
@@ -0,0 +1,49 @@
+<?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/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>ear</groupId>
+  <artifactId>maven-ear-plugin-test-project-099</artifactId>
+  <version>99.0</version>
+  <name>Maven</name>
+  <packaging>ear</packaging>
+  <dependencies>
+    <dependency>
+      <groupId>eartest</groupId>
+      <artifactId>ejb-sample-one</artifactId>
+      <version>1.0</version>
+      <type>ejb</type>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-ear-plugin</artifactId>
+        <version>@project.version@</version>
+        <configuration>
+          <version>9</version>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
