Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: 3.0.4
-
Fix Version/s: None
-
Component/s: Embedding, IDEs, Inheritance and Interpolation, POM
-
Labels:None
-
Complexity:Intermediate
-
Patch Submitted:Yes
-
Number of attachments :
Description
I'm trying to create a view over a pom.xml file that displays current effective pom, along with showing which line came from which pom. Works more or less ok, with the provided InputLocations with one significant exception. <configuration> element in <plugin>. See screenshot.
The idea in the patch is to have the InputLocation tree mimic the tree of Xpp3Dom objects. All the merges of Xpp3Dom then manipulate the tree of InputLocations as well.
The patch included is not complete, just proof of concept, needs to have proper InputLocation creating in Xpp3DomMavenReaderExt file (I've replaced that by some quick post processing, changing modello plugins to generate something else is error prone slow to to start with). Additionally the default Xpp3Dom merging from plexus-utils is replaced by maven's own version of merge code. Not sure there if it's possible/practical to move that code down to the dependency.
also some additional tests are required to be written
one stopper problem is that equals/hashcode on Xpp3DOM work with the values of the entire subtree. Once we create the locations tree with Xpp3DOM as keys in InputLocation, we arrive at a problem once ModelInterpolator is invoked on the pom file. any expression in any value invalidates the entire locations subtree because the hashcode/equals values changes and the maps in InputLocation keep the old hash as reference for lookup of values.