Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Won't Fix
-
Affects Version/s: 2.0
-
Fix Version/s: None
-
Component/s: Plugin API, Plugins and Lifecycle
-
Labels:None
-
Complexity:Intermediate
-
Number of attachments :
Description
Need to resolve the use-case discussed on dev:
http://www.nabble.com/Re%3A-m2-Plugins-that-depend-on-other-plugin-goals-t473646.html
Activity
Brett Porter
made changes -
| Field | Original Value | New Value |
|---|---|---|
| Fix Version/s | 2.1 [ 11704 ] |
Vincent Massol
made changes -
| Workflow | Maven [ 42412 ] | Maven New [ 48176 ] |
Jason van Zyl
made changes -
| Fix Version/s | 2.1 [ 11704 ] | |
| Fix Version/s | 2.1.x [ 13142 ] |
Brett Porter
made changes -
| Component/s | Plugin API [ 11521 ] | |
| Component/s | Plugins and Lifecycle [ 11340 ] |
Jason van Zyl
made changes -
| Fix Version/s | 3.x [ 13145 ] | |
| Fix Version/s | 3.0 [ 13142 ] |
Jason van Zyl
made changes -
| Resolution | Won't Fix [ 2 ] | |
| Status | Open [ 1 ] | Closed [ 6 ] |
Brett Porter
made changes -
| Fix Version/s | 3.x [ 13145 ] |
Hi,
I've been reading through all the maven 2 documentation to understand how I can:
Use Case A) Define a new archetype and give it's own lifecycle.
Use Case B) Redefine the lifecycle of a current archetype
Before I started I tried to think of the simplest way to do this, so I had a reference point for how it is currently being done.
Here's an example of what I think would be the simplest way to do use case A:
http://maven.apache.org/guides/mini/guide-creating-archetypes.html
<Routing-Sequences>
<Sequence id="1">
<goal name="p1:g1">
</goal>
<goal name="p2:g1">
</goal>
<goal name="p3:g1">
</goal>
<goal name="p4:g1">
</goal>
</Sequence>
<Sequence id="2">
<goal name="p1:g1">
</goal>
<goal name="p4:g1">
</goal>
<goal name="p3:g1">
</goal>
<goal name="p5:g1">
</goal>
</Sequence>
</Routing-Sequences>
This would let maven know how to process the files given by an archetype instance.
In this case the sequences are mutually exclusive. So they can be performed in paralell if need be. The order in which the plugin goals are executed is the order in which they are given.
Now if I needed to do Use Case B I would just put something like this in the POM
for that archetype instance:
<Sequence>
<goal name="px:g1" sequence="1" depends="p2:g1">
</Sequence>
This lets maven know that it needs to perform goal g1 of plugin px after goal g1 of plugin p2 of sequence 1.
Now since Maven executes phases in the lifecycle,
lifecycle metadata could be bound to each <goal> element within each sequence, and
the user could just do
mvn sequence1:deploy ...
Obviously the sequence would need to be specified if there are multiple sequences.
Any thoughts?
Thanks,