From f38a4f95c6e844d79ff7a6b803c0c46f0223f72c Mon Sep 17 00:00:00 2001
From: Andreas Dangel <andreas.dangel@adangel.org>
Date: Sun, 24 Jun 2018 09:27:07 +0200
Subject: [PATCH] [java] MissingOverrideRule exception when analyzing PMD under
 Java 9 Fixes #1074

Jaxen is now shaded into pmd-core, without org.w3c.dom.**
---
 docs/pages/release_notes.md |  1 +
 pmd-core/pom.xml            | 28 ++++++++++++++++++++++++++++
 pmd-java/pom.xml            |  4 ----
 pmd-java8/pom.xml           |  4 ----
 pmd-plsql/pom.xml           |  4 ----
 pmd-xml/pom.xml             |  4 ----
 6 files changed, 29 insertions(+), 16 deletions(-)

diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md
index 0945bf0d1c..112bd7f4ce 100644
--- a/docs/pages/release_notes.md
+++ b/docs/pages/release_notes.md
@@ -43,6 +43,7 @@ This is a minor release.
 *   ecmascript
     *   [#861](https://github.com/pmd/pmd/issues/861): \[ecmascript] InnaccurateNumericLiteral false positive with hex literals
 *   java
+    *   [#1074](https://github.com/pmd/pmd/issues/1074): \[java] MissingOverrideRule exception when analyzing PMD under Java 9
     *   [#1174](https://github.com/pmd/pmd/issues/1174): \[java] CommentUtil.multiLinesIn() could lead to StringIndexOutOfBoundsException
 *   java-bestpractices
     *   [#651](https://github.com/pmd/pmd/issues/651): \[java] SwitchStmtsShouldHaveDefault should be aware of enum types
diff --git a/pmd-core/pom.xml b/pmd-core/pom.xml
index a3ebcabd59..b142191cde 100644
--- a/pmd-core/pom.xml
+++ b/pmd-core/pom.xml
@@ -60,6 +60,34 @@
                     <suppressionsLocation>pmd-core-checkstyle-suppressions.xml</suppressionsLocation>
                 </configuration>
             </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <configuration>
+                    <artifactSet>
+                        <includes>jaxen:jaxen</includes>
+                    </artifactSet>
+                    <filters>
+                        <filter>
+                            <artifact>jaxen:jaxen</artifact>
+                            <includes>
+                                <include>org/jaxen/**</include>
+                            </includes>
+                            <excludes>
+                                <exclude>org/w3c/dom/**</exclude>
+                            </excludes>
+                        </filter>
+                    </filters>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
     <dependencies>
diff --git a/pmd-java/pom.xml b/pmd-java/pom.xml
index f81e45e1ea..e4e0e0dc33 100644
--- a/pmd-java/pom.xml
+++ b/pmd-java/pom.xml
@@ -107,10 +107,6 @@
         </plugins>
     </build>
     <dependencies>
-        <dependency>
-            <groupId>jaxen</groupId>
-            <artifactId>jaxen</artifactId>
-        </dependency>
         <dependency>
             <groupId>net.java.dev.javacc</groupId>
             <artifactId>javacc</artifactId>
diff --git a/pmd-java8/pom.xml b/pmd-java8/pom.xml
index d4c1005c64..766c2b5acf 100644
--- a/pmd-java8/pom.xml
+++ b/pmd-java8/pom.xml
@@ -54,10 +54,6 @@
             <version>${project.version}</version>
         </dependency>
 
-        <dependency>
-            <groupId>jaxen</groupId>
-            <artifactId>jaxen</artifactId>
-        </dependency>
         <dependency>
             <groupId>net.sourceforge.pmd</groupId>
             <artifactId>pmd-core</artifactId>
diff --git a/pmd-plsql/pom.xml b/pmd-plsql/pom.xml
index 1eb481e094..1a74938bbc 100644
--- a/pmd-plsql/pom.xml
+++ b/pmd-plsql/pom.xml
@@ -112,10 +112,6 @@
             <groupId>net.sourceforge.saxon</groupId>
             <artifactId>saxon</artifactId>
         </dependency>
-        <dependency>
-            <groupId>jaxen</groupId>
-            <artifactId>jaxen</artifactId>
-        </dependency>
 
         <dependency>
             <groupId>junit</groupId>
diff --git a/pmd-xml/pom.xml b/pmd-xml/pom.xml
index 2193f89a27..766741e7d7 100644
--- a/pmd-xml/pom.xml
+++ b/pmd-xml/pom.xml
@@ -65,10 +65,6 @@
         </plugins>
     </build>
     <dependencies>
-        <dependency>
-            <groupId>jaxen</groupId>
-            <artifactId>jaxen</artifactId>
-        </dependency>
         <dependency>
             <groupId>net.sourceforge.pmd</groupId>
             <artifactId>pmd-core</artifactId>