[ http://jira.codehaus.org/browse/MNG-607?page=comments#action_43137 ] 

John Casey commented on MNG-607:
--------------------------------

My plan for implemetation (comments are welcome):

=============================================================================

MNG-607: release-pom handling

Goals
------------------------

PRIMARY

* Support fully reproducible builds for releases
* Support rebuilding releases from tagged SCM checkouts

SECONDARY

* Provide concrete information about how an artifact was created

Requirements
------------------------

* fully resolved release-pom.xml should be created in ${pom.build.directory}
  during package

    - should EXPLICITLY define all information inherited/implied by the
      normal pom.xml, with no expressions.

    - all RELEASE/LATEST/SNAPSHOT/range metadata should be resolved to 
      concrete versions

    - release-pom.xml should be archived in the artifact, rather than
      the original pom.xml

* release plugin execution should manage this release-pom.xml alongside the
  original pom.xml, and tag appropriately

    - should be committed and tagged with the release

    - should then be deleted before next (-SNAPSHOT) pom.xml version is 
      committed


* execution of subsequent builds should try first to use release-pom.xml

    - default over to pom.xml if non-existent

    - NOTIFY the user when using release-pom.xml

    - allow '-f' switch to force use of pom.xml (or other pom file) when
      release-pom.xml exists


Implementation
---------------------

* Add getFullyResolvedModel():Model to some sort of utility component 
  (DefaultMavenProjectBuilder, MavenProject, etc. ?)

    - sort through plugins and resolve to concrete version

    - sort through dependencies and resolve to concrete version

    - remove dependencyManagement and pluginManagement (not used in 
      fully-resolved scenario)

    - cache this Model instance for later reuse?

* Change MavenArchiver to use ${project.fullyResolvedModel} for the bundled 
  pom.xml in META-INF

* Change release plugin to write, tag/commit, delete, commit release-pom.xml 
  using ${project.fullyResolvedModel} to ${basedir}/release-pom.xml.

* Modify MavenCli:

    - pickup on release-pom.xml if it exists, and NOTIFY THE USER that it's 
      using that pom.

    - provide '-f' switch for explicitly specifying which pom file to use (for 
      overriding release-pom.xml selection)


Plan of Attack
-----------------------

1. Implement getFullyResolvedModel():Model with caching in MavenProject(?)

2. Modify MavenArchiver to use fully resolved model in META-INF

3. Modify MavenCli to support '-f' and choice of release-pom.xml over pom.xml

4. Modify release plugin to support management of release-pom.xml




> implement release-pom.xml from design docs
> ------------------------------------------
>
>          Key: MNG-607
>          URL: http://jira.codehaus.org/browse/MNG-607
>      Project: Maven 2
>         Type: New Feature
>   Components: maven-plugins, maven-core
>     Reporter: Brett Porter
>     Assignee: John Casey
>     Priority: Blocker
>      Fix For: 2.0-beta-1

>
>
> 2 components to this:
> - writing the pom during the release plugin and doing the scm operations
> - using it instead when present at build time, instead of pom.xml
> For the second, I'm not sure if this should be automatic or controlled by a 
> -f switch. I think it should be automatic, and the -f switch should be 
> implemented to allow pom.xml to be used when release-pom.xml is there. (As 
> well as other pom files).
> Design: 
> http://docs.codehaus.org/display/MAVEN/Dependency+Mediation+and+Conflict+Resolution

-- 
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


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to