History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: MNG-1649
Type: Bug Bug
Status: Open Open
Priority: Major Major
Assignee: Unassigned
Reporter: Mark Hobson
Votes: 3
Watchers: 2
Operations

If you were logged in you would be able to see more operations.
Maven 2

Allow plugins to depend upon other plugin's goals

Created: 21/Nov/05 05:40 PM   Updated: 05/Sep/07 02:56 AM
Component/s: Plugins and Lifecycle, Plugin API
Affects Version/s: 2.0
Fix Version/s: 3.0

Time Tracking:
Not Specified

Complexity: Intermediate


 Description  « Hide

 All   Comments   Work Log   Change History      Sort Order: Ascending order - Click to sort in descending order
Ole Ersoy - 18/Jan/06 07:32 PM
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:

  • Then add to the pom something like this:
    <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,

  • Ole

Brett Porter - 05/Sep/07 02:56 AM
Mark - want to do a proposal for this one?