this sound is ok for me.

Emmanuel

Brett Porter wrote:
Hi,

Ref: MNG-598, MNG-226

We have "build extensions" - ie providers for wagon, scm that are not
really plugins but additional providers for a particular plexus role.
Currently, these need to be dropped into M2_HOME/lib along with their
dependencies which is not ideal. (SCM ones can be a dependency on the
SCM/release plugin, but there is no scope to later add a new one). In
the future, repository metadata might help us locate plexus components
with a particular role and role hint, but this will hold us over until then.

While we should still make the "standard" ones available out of the box,
it needs to be easy to add more via the project in a reproducible way,
so I propose:

<build>
  <extensions>
    <extension>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-ftp</artifactId>
      <version>1.0-alpha-4</version>
    </extension>
  </extensions>
</build>

This is here instead of in dependencies for clarity and so that you can
use them both as an extension and as a dependency without having to
worry about matching versions or scope.
 Extensions are:
- inherited from the parent
- have NO configuration
- the version can be omitted (use RELEASE) or use ranges like a plugin
and will be populated by the release plugin

At execution, it needs to be available to the core code (eg
DefaultWagonManager), and also particular plugins (eg maven-scm-plugin).
For now, I just intend to push the extensions into the core classloader.
I think we might eventually need to construct a per-project execution
realm as a basis for plugin realms and recreate those plugin realms for
each project (currently it is only ever created for one plugin - so
mutliple versions of a plugin might have problems).

This would be very inconvenient for adding plugins that provide type and
packaging handlers, but we don't want to have to resolve and search all
the plugins to find a missing dependency type. For this, we can add
<extensions>true|false</extensions> to the <plugin/> element, eg:

<plugin>
  <groupId>org.codehaus.plexus</groupId>
  <artifactId>plexus-maven-plugin</artifactId>
  <extensions>true</extensions>
  <configuration>
    ...
  </configuration>
</plugin>

This will indicate to the plugin manager to pre-load those plugins, and
to search it for any plexus components. When the lifecycle executor is
looking for a packaging handler, it will have to search those plugin
containers also.

How does this sound?

- Brett

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





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

Reply via email to