On Sat, 2005-10-22 at 20:41 -0700, Brett Porter wrote:
> this relates to MNG-123, MNG-263
> 
> the objectives we have:
> 1) build m2 with m2 (this is already possible, but I think now that 2.0
> is out this should be the primary technique)
> 
> 2) build source distros (these won't include plugins, and will build as
> above)
> 
> 3) bootstrap without an m2 installation

Can't we do this now?

> 4) bootstrap without dependencies (ie, build plexus etc from sources
> before m2, for gump and gentoo, etc)

How are we going to do this easily right now? Say, picking a tag for
plexus and all the other dependencies. Or will this option come in a
subsequent refactoring?

> First step is to move the assembly configuration from maven-core to the 
> top level of components, and also configure the source distribution 
> mechanism.
> 
> The standard assembly plugin will be used to install Maven from the top 
> level (assembly:assembly assembly:unpack).
> 
> Here is the layout I was thinking of:
> 
> /repos/asf/maven
>    /archetype
>      /trunk
>        /m-a-core
>        /m-a-plugin
>        /m-archetypes
>          /m-a-quickstart
>          /m-a-...
>    /components
>      /trunk
>        /maven-ant-tasks (formerly maven-artifact-ant)
>        /maven-archiver
>        /maven-artifact
>        /maven-artifact-manager
>        /maven-artifact-test
>        /maven-core
>        /maven-embedder
>        /maven-error-diagnostics
>        /maven-model
>        /maven-monitor
>        /maven-plugin-api
>        /maven-plugin-descriptor
>        /maven-plugin-parameter-documenter
>        /maven-plugin-registry
>        /maven-plugin-tools
>        /maven-profile
>        /maven-project
>        /maven-reporting
>        /maven-repository-metadata
>        /maven-script
>        /maven-settings
>        /examples
>        /integration-tests
>          /maven-core-it-plugin
>          /maven-core-it-support
>          /maven-core-it-verifier
>          /maven-core-it
>          /maven-embedder-it
>        /bootstrap
>          /phase1
>          /phase2
>          ...
>        m2-bootstrap-all.[sh|bat]
>        ci.sh
>    /plugins
>      /maven-assembly-plugin
>        /trunk
>      /maven-...-plugin
>        /trunk
>    /repository-manager
>      /trunk
>        /maven-meeper
>        /repoclean (rename to maven-repository-converter?)
>    /sandbox
>      /acm
>      /...
>    /site
>      /trunk

+1

For the directory reorg.

> The bootstrap would be much like at present, but be split into phases.
> 
> phase 1:
> - like mboot2, but pared down so that it can do an install for any 
> limited pom.xml using just the jdk

But this would still require plexus and much of the other dependencies
being built from source?

> - no longer deals with transitive deps or snapshots, just downloads jars 
> if needed (this means that we can't use a snapshot of modello or plexus 
> in the bootstrap and must instead build with m2 if that is the case; but 
> also greatly simplifies the code to avoid inconsistencies and dual 
> maintenance)

So we're downloading here and not building from source. I'm confused
with the object above of building from source.

> - no longer runs tests, a later phase will rebuild everything and do this

+1

> Phase 2:
> - builds maven-artifact-manager and its dependencies (by downloading 
> them) - the plexus utils and container, + modello core and modello + 
> wagon and the lightweight http provider
> - builds a new jar depending on phase 1, utilising the artifact code 
> instead for transitive dependency calculation
> 
> Phase 3:
> - uses the artifact handling code for further dependency downloads
> - build all libraries
> - construct a minimal m2 installation in ./target/
> 
> Phase 4:
> - reuse the installation to rebuild all libraries and install to the 
> final location using assembly as above
> - plugins are downloaded, not built
> 
> Phase 5:
> - integration tests are built and run
> - plugins are never rebuilt en masse
> 
> If you are building everything from sources, phase 2 will build the 
> sources by checking them out (a simple svn exec, not using maven-scm) or 
> using a provided directory location. These will not be installed (as 
> they are untested), placed in /target/ and used to construct the 
> libraries, so a system like gump would not declare a dependency on them 
> for the bootstrap.
> 
> When building from source, phase 4 will build the required plugins and 
> put them in the local repository, just as in phase 2 for modello, etc. 
> The required plugins are jar, plugin, clean, assembly, modello, 
> surefire, resources, install, compile.
> 
> What do others think of this?

+1

If you want to do the work then go for it.

> - Brett
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
-- 
jvz.

Jason van Zyl
jason at maven.org
http://maven.apache.org

In short, man creates for himself a new religion of a rational
and technical order to justify his work and to be justified in it.

  -- Jacques Ellul, The Technological Society


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

Reply via email to