[ https://issues.apache.org/jira/browse/MNG-5862?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17805475#comment-17805475 ]
ASF GitHub Bot commented on MNG-5862: ------------------------------------- gnodet commented on PR #1205: URL: https://github.com/apache/maven/pull/1205#issuecomment-1886753042 > Mostly nits. They should be all fixed now. > More generally, rereading this I'm struck at how much work this is. You've provided a nearly complete XInclude implementation. The maintenance burden on this code is likely to be high. It feels like this belongs in the parser, or perhaps a separate library on top of the parser, and all Maven should do when reading a pom is flip the flag to turn on XInclude support. Maven's XML parsing is already quite non-standard and avoids the normal parsers like Xerces or the JDK's because of decisions made 20 years ago when the easier path was not so obvious. This is unfortunately baked into a lot of the code and even the public APIs, so I'm not sure how much of that can be repaired now. > > Nonetheless, I do wonder if this code belongs here instead of in the parser. We switched to a standard StaX parser in 4.x. The xml parser is now Woodstox, which is a fully conformant parser. Unfortunately, I don't know any StaX parser that provides support for XInclude, so I ended up writing one, borrowing the XPointer implementation from Apache Woden. I'd rather keep it separated from the parser so that we can eventually switch to Aalto which is slightly faster than Woodstox, but there were a few problems when I tried initially. As for the location, I originally put it in an external repository (https://github.com/gnodet/stax-xinclude), but you asked to move it back in this repository. I agree, this library is independent of Maven and would be better outside. I can maintain it as a personal project (and rename the package) if you think it's better, I don't really mind. > POM XML parser needs XInclude and/or XML Entity support > ------------------------------------------------------- > > Key: MNG-5862 > URL: https://issues.apache.org/jira/browse/MNG-5862 > Project: Maven > Issue Type: New Feature > Components: POM > Reporter: Jason Vas Dias > Assignee: Guillaume Nodet > Priority: Major > > POM XML files can get very large and repetitive , and not all modularizaton > scenarios can be resolved by using a Super POM as described in MNG-1980 , > and would be easily resolved if only the POM parser supported XIncludes or > XML Entities - neither are supported. > Here is one such scenario: > I have a large project that has several SureFire plugin based "Test Suites" - > each test suite uses a "common-at-classes" module of common test classes, > and is essentially identical except in its XML configuration "test resource" > files > - so the structure is like this : > {quote} > {noformat} > Top Level project directory: > ./pom.xml > ./acceptance-tests/pom.xml > ./acceptance-tests/common-at-classes/pom.xml > ./acceptance-tests/test-suite_#1/pom.xml > ... > ./acceptance-tests/test-suite_#N/pom.xml > {noformat} > {quote} > There are @ 10 ( being upgraded to @ 20) "test suites", > which all do exactly the same thing, but with slightly > different "test resource" configuration files, > and depend on the 'acceptance-tests/common-at-classes" JAR . > We can modularize all the test-suite dependencies OK in the single > common-at-classes/pom.xml location . > But their is no way to modularize the actual XML code that runs each > test-suite with plugin executions - these plugin execution stanzas can > currently ONLY > be in each test-suite#N directory, even though they are identical. > It would make no sense to have the "Super POM" : acceptance-tests/pom.xml > contain the plugin executions to run any single test suite ; nor can the > common-at-classes/pom.xml contain the plugin execution to run any > test suite, since a test suite run depends on the customized test resource > files that only exist in each "test_suite#N/" sub-project . > So the only solution currently available with Maven is to copy the XML stanzas > that configure and run the test suite ( about 400 lines of XML ) into each of > the 10-20 test-suite/pom.xml files ; this is all because Maven does not > support > XML XInclude or XML Entities; if it did, we could put all this code into one > XML > file provided by the common-at-classes project, and include it in each test > suite . > The test suite XML is then a nightmare to maintain, consistently for all test > suites. > This is becoming such a problem that I am considering making the root project > POM do nothing more than transform the test-suite poms with XML XInclude-s > (using an external XML processor), creating a new copy of the whole project, > and then run an exec plugin goal which runs maven with the transformed POMs. > Please, please can we have some form of XInclude or XML Entity support , or > support for an "<include ...>" element, in the POM parser ! -- This message was sent by Atlassian Jira (v8.20.10#820010)