Brett Porter wrote:
> The active project changes during the reactor build. At the compile
> stage, it refers to the target/classes directory. At the package
> stage, it points to the jar file. If you are implementing your own
> packaging goal, you need to call project.getArtifact().setFile( ... )
> to ensure this is used.

- multi module howto
- per user scm setup
  - outline behaviour when connection and developConnection are defined
   
   Our current URL looks like:
   scm:cvs:pserver:@cvs.host.name:/cvsroot:module-version
   
   Using this URL, the default is to connect to the CVS server using the
   same userid as the current user.  This is the desired behavior and I
   don't want to mess that up.  I just would like a means to add a userid
   in the URL only in special circumstances like Continuum.
   
   We might want to do something where we say it is a best practice to
   specify a ${user} and take it from the environment and allow an override.

- testing a plugin
- How to get started behind an NTLM proxy.
- How snapshots works
- How do i use the lifecycle provided by a plugin:
- How do i disable ibiblio
- using version ranges
- plugin expressions (look at bob allison's work)
- overriding the central repository (use central)
- description of what packagings are available and how they work
- creating upload bundles
- modello example
- changing the snapshot policy frequency
- overriding central repo
- using POM info in applications: the POM is packaged so there is acccess
  continuum example to get the version.
- quick description of scm,wagon,continuum
