Allow plugins the chance to alter the project artifacts/dependencies during
'resolution phase'
----------------------------------------------------------------------------------------------
Key: MNG-4039
URL: http://jira.codehaus.org/browse/MNG-4039
Project: Maven 2
Issue Type: New Feature
Components: Dependencies, IDEs, Plugin API, Plugins and Lifecycle, POM
Affects Versions: 2.0.9
Environment: n/a
Reporter: Steve Ebersole
The term 'resolution phase' was taken from an email on this subject :
http://www.nabble.com/Re%3A-Programmatically-adding-dependencies-to-a-MavenProject-p21668701.html
Basically, there are times when a plugin could add dependencies to the project
dependency tree in an effort to alleviate the project pom developer from
unnecessary ugliness. My particular use-case is very fitting imo. In trying
to write a plugin for antlr's gunit functionality. gUnit is a mechanism for
generating JUnit tests for testing antlr grammars; it uses an antlr grammar
itself to describe the tests. Typically, a project using antlr3 is going to
define a dependency on the org.antlr:antlr-runtime artifact, since that
artifact contains all the classes needed to utilize antlr in the runtime as
well as all that need to be exposed via transitive dependencies. However,
during build-time, a project using antlr is also going to need access to the
org.antlr:antlr artifact which defines all the classes needed for grammar ->
java-class transformations. As an "anti-example", currently the antlr3 plugin
handles this by defining a "hard dependency" to a particular version of
org.antlr:antlr in its pom even if that version is a mismatch from the one used
by the project. Wouldn't it be great if the plugin were allowed to be smart
enough to say "hey, the project to which I am attached is using
org.antlr:antlr-runtime:3.1.0 so i really should be using org.antlr:antlr:3.1.0
for grammar transformation"? And in the case of the antlr3 plugin it actually
can do this already because it does not need to muck with any of the project
classpaths in order to do this. But in the case of this gunit example, that is
not the case. As I said, gunit generates JUnit test classes which should then
get picked up by the normal surefire mechanism and executed. The issue is that
these gunit-generated JUnit classes have dependencies on gunit classes, so
gunit must be available on the test compilation classpath. Following along
with the discussion above, it would be fantastic if the plugin could handle all
these details for the project and prepare the classpath properly.
One possibility for implementing this is a new method on
org.apache.maven.plugin.Mojo. Another is a new optional mojo interface like
org.apache.maven.plugin.DependencyContributingMojo
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira