[ https://jira.codehaus.org/browse/MPMD-204?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=362906#comment-362906
]
Alix Lourme commented on MPMD-204:
----------------------------------
{quote}
WDYT
{quote}
The joys of Xml APIs with Xerces ^^ :p
Seriously, with -e option (see [^site-plexus-classpath.log]), _maven-site-plugin_ has by default
in classpath (by plexus) : xercesImpl-2.9.1 / xml-apis-1.3.04.
pmd-java 5.2.3 use xercesImpl-2.11.0 as dependency, without xml-apis-1.4.01 (seem to be required
for this xerces version).
Executing _maven-pmd-plugin_ under Eclipse (Kepler SR2), I have the same error (_ElementTraversal_
not found).
On a simple Eclipse java project with only xercesImpl-2.11.0 dependency, following code provides
same error (no xml-apis provided in dependencies) :
{code}
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
parser.newDocument();
{code}
No error with xercesImpl-2.9.1 ... this xerces version has xml-apis-1.3.04 in own dependencies
...
In addition, and contrary to v2.9.1, v2.11.0 seems to require xml-apis for _parser.newDocument()_
call.
----
{quote}
Why did no unit/integration test fail
{quote}
I don't know, I don't understand how there is no problems if the required xml-apis-1.4.01
is not provided :(.
I haven't excluded that the bug comes from my environment ... but it has nothing specific.
----
*+Solution+* ?
I think the best solution is to delete xerces dependency from pmd-java.
To let the high level component the choice of xml API implementation (maven plugin : site
or pmd).
Perhaps using the maven dependencies plugin exclusion system could work (xerces ) ... and
is a better solution that upgrade xml-api (as in my original issue description) and not xerces
(dangerous).
I will do some tests tomorrow.
> CPD report : Required class was missing : org/w3c/dom/ElementTraversal
> ----------------------------------------------------------------------
>
> Key: MPMD-204
> URL: https://jira.codehaus.org/browse/MPMD-204
> Project: Maven PMD Plugin
> Issue Type: Bug
> Components: CPD
> Affects Versions: 3.3, 3.4
> Environment: Maven 3.2.3
> Reporter: Alix Lourme
> Attachments: site-plexus-classpath.log
>
>
> Hi,
> Since _maven-pmd-plugin_ v3.3, on a simple pom :
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <project...>
> <modelVersion>4.0.0</modelVersion>
> <groupId>test</groupId>
> <artifactId>test</artifactId>
> <version>1.0.0-SNAPSHOT</version>
> <packaging>jar</packaging>
> <reporting>
> <plugins>
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-pmd-plugin</artifactId>
> <version>3.4</version>
> </plugin>
> </plugins>
> </reporting>
> </project>
> {code}
> Command _mvn site_ gives :
> {quote}
> Caused by: org.apache.maven.plugin.PluginContainerException: A required class was missing
while executing org.apache.maven.plugins:maven-site-plugin:3.3:site: org/w3c/dom/ElementTraversal
> {quote}
> Stack :
> {code}
> Caused by: java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
> at java.lang.ClassLoader.defineClass1(Native Method)
> [...]
> at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:227)
> at org.apache.xerces.jaxp.DocumentBuilderImpl.newDocument(Unknown Source)
> at net.sourceforge.pmd.cpd.XMLRenderer.createDocument(XMLRenderer.java:50)
> at net.sourceforge.pmd.cpd.XMLRenderer.render(XMLRenderer.java:73)
> at org.apache.maven.plugin.pmd.CpdReport.writeNonHtml(CpdReport.java:301)
> at org.apache.maven.plugin.pmd.CpdReport.executeCpd(CpdReport.java:260)
> at org.apache.maven.plugin.pmd.CpdReport.executeCpdWithClassloader(CpdReport.java:195)
> at org.apache.maven.plugin.pmd.CpdReport.canGenerateReport(CpdReport.java:170)
> [...]
> at org.apache.maven.plugins.site.SiteMojo.execute(SiteMojo.java:121)
> [...]
> Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal
> at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
> [...]
> at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:227)
> [...]
> {code}
> ----
> Adding this override fix the problem, but could introduce some impacts on other report
plugins :
> {code:xml}
> <build>
> <pluginManagement>
> <plugins>
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-site-plugin</artifactId>
> <version>3.4</version>
> <dependencies>
> <dependency>
> <groupId>xml-apis</groupId>
> <artifactId>xml-apis</artifactId>
> <version>1.4.01</version>
> </dependency>
> </dependencies>
> </plugin>
> </plugins>
> </pluginManagement>
> </build>
> {code}
--
This message was sent by Atlassian JIRA
(v6.1.6#6162)
|