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
4) bootstrap without dependencies (ie, build plexus etc from sources
before m2, for gump and gentoo, etc)
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
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
- 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)
- no longer runs tests, a later phase will rebuild everything and do this
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?
- Brett
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]