You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by Brett Porter <br...@apache.org> on 2005/10/23 05:41:57 UTC

proposed SVN reorg and new bootstrap

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: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Re: proposed SVN reorg and new bootstrap

Posted by Jason van Zyl <ja...@maven.org>.
On Mon, 2005-10-24 at 11:41 -0700, Brett Porter wrote:
> Jason van Zyl wrote:

> Actually, I figured Trygve will do it for us so he can do his Debian 
> packging :)

Nice :-)

> I may not get right into this but I'd least like to do the restructure 
> and documentation and leave the path open for someone to do it, as we 
> have had  abunch of questions about this over the last 6 months.

Sure, I'm definitely for the source tree reorg.

> - Brett
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
> 
> 
-- 
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: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Re: proposed SVN reorg and new bootstrap

Posted by Trygve Laugstøl <tr...@codehaus.org>.
On Mon, 2005-10-24 at 11:41 -0700, Brett Porter wrote:
> Jason van Zyl wrote:

[snip]

> > If you want to do the work then go for it.
> 
> Actually, I figured Trygve will do it for us so he can do his Debian 
> packging :)
> 
> I may not get right into this but I'd least like to do the restructure 
> and documentation and leave the path open for someone to do it, as we 
> have had  abunch of questions about this over the last 6 months.

I'd like to work on this indeed, so if you don't mind I'll start with
something in the sandbox, based on the existing mboot2 code.

Not sure where to start, I'll see if I can get some time to look at it
this weekend and get back to you with a strategy.

To all others: if you are interested in packaging Maven 2 for your
favorite distribution, please speak up now so we can try to coordinate
our efforts.

--
Trygve



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Re: proposed SVN reorg and new bootstrap

Posted by Brett Porter <br...@apache.org>.
Jason van Zyl wrote:
>>
>>3) bootstrap without an m2 installation
> 
> 
> Can't we do this now?

Yes, but its a goal to still be able to do this after attaining 1 & 2 :)

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

Yes, that is part of the purpose of changing the bootstrap.

> 
>>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, like mboot now, this doesn't require plexus. It would just the like 
mboot1 where it could build any m2 project within some constraints (so 
we can use it to build plexus, etc for the next phase).

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

The default mode would be to download releases. The from-source building 
option is for stubborn projects like gump and gentoo which don't believe 
in binaries :)

Of course, this is by necessity in gump and so it will use plexus HEAD, 
where Gentoo will probably use the tag we give them that corresponds to 
the version it is later going to install.

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

Actually, I figured Trygve will do it for us so he can do his Debian 
packging :)

I may not get right into this but I'd least like to do the restructure 
and documentation and leave the path open for someone to do it, as we 
have had  abunch of questions about this over the last 6 months.

- Brett

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Re: proposed SVN reorg and new bootstrap

Posted by Jason van Zyl <ja...@maven.org>.
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: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
> 
> 
-- 
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: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


Re: proposed SVN reorg and new bootstrap

Posted by Brett Porter <br...@apache.org>.
Vincent Siveton wrote:
> Hi Brett,
> 
> Sounds very good to me. Thanks.
> 
> Just to be sure, in your mind, should the 'site' project be the m2 site
> project, I mean a project that contains only m2 doc and no m1, continuum,
> jxr... docs.

It is the top level site and whatever that contains (I think the current 
maven-site is a good example of that, and it can link into reference doc 
for 2.0, 2.1, continuum, etc).

> 
> Do you think that we could also name (<name/> in pom.xml) some sub-projects
> (for instance, org.apache.maven:maven-artifact-ant or
> org.apache.maven.reporting:maven-reporting-impl)

Yes, I've thought this many times and never got around to it.

- Brett

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org


RE: proposed SVN reorg and new bootstrap

Posted by Vincent Siveton <vi...@gmail.com>.
Hi Brett,

Sounds very good to me. Thanks.

Just to be sure, in your mind, should the 'site' project be the m2 site
project, I mean a project that contains only m2 doc and no m1, continuum,
jxr... docs.

Do you think that we could also name (<name/> in pom.xml) some sub-projects
(for instance, org.apache.maven:maven-artifact-ant or
org.apache.maven.reporting:maven-reporting-impl)

Cheers,

Vincent

> -----Original Message-----
> From: Brett Porter [mailto:brett@apache.org]
> Sent: Saturday, October 22, 2005 11:42 PM
> To: Maven Developers List
> Subject: proposed SVN reorg and new bootstrap
> 
> 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: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org