Details
-
Type:
Improvement
-
Status:
Closed
-
Priority:
Blocker
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 1.5
-
Labels:None
-
Number of attachments :
Description
Currently, pom:install does a file copy to the local repo. This has multiple problems.
- Entities are not resolved, and entity imports are not copied.
- Extends path can be relative, which makes it nearly impossible to use the pom in a meaningful way without also finding it's parent (usually the only way to resolve ../project.xml would be to do an scm checkout; but that info is in the pom that won't parse).
I propose the following:
prior to the file copy inside pom:install and pom:deploy, there should be a prereq="pom:generate-standalone" which would literally take the Project instance in memory and serialize it to a temporary project.xml (let's say target/project.xml or something). The pom:install and pom:deploy goals would then copy that file to the repo rather than the original project.xml file.
It would:
- Remove the extends element, because the Project instance is the result of any merges
- Remove the issue of discorporeal entities, since entity resolution would have happened before parsing the project.xml at the beginning of pom:xxx
I think this is still logically valid, since any pom in the repo is considered an artifact, and should be able to stand on it's own without complex interpretation. It would also be easy to do with xstream or any other type of xml serialization...even xpp3's XmlSerializer could do it, and the code to do so would be of minimal size.
Issue Links
- is related to
-
MAVEN-1390
POM example <extends> doco is non-portable
-
Seems to be a sequel of
MAVEN-1390.