originalModel in MavenProject has shallow clones of plugin instances and can be 
polluted when plugin versions are resolved
--------------------------------------------------------------------------------------------------------------------------
                 Key: MNG-3674
                 URL: http://jira.codehaus.org/browse/MNG-3674
             Project: Maven 2
          Issue Type: Bug
          Components: General, Plugins and Lifecycle
    Affects Versions: 2.0.9
            Reporter: John Casey


This is NOT a regression; it's always been this way. Plugin instances are 
reused when ModelUtils.cloneModel(..) is called, rather than making a copy with 
the same plugin information. Since the plugin manager modifies that Plugin 
instance when it resolves a missing version, that modification will be 
reflected in the originalModel copy that lives in the MavenProject instance. 
This could be an issue because that originalModel is supposed to be a pristine 
copy of the POM as it was read - uninterpolated, uninherited, without any 
profile information injected, and without any modifications by the plugin 
manager, lifecycle executor, or any other component.

This could affect POM information as it's written out by various plugins during 
a build, maybe including the POM copy that lands in META-INF of the finished 
artifact.

The quickest solution to this would be to stop reusing the 
ModelInheritanceAssembler logic behind the scenes of ModelUtils.cloneModel(..) 
and instead serialize/deserialize the model instance to/from a 
StringWriter/Reader. This would leverage the generated formatters and parsers 
from maven-model to allow us to avoid rewriting that logic for the clone 
operation.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to