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:
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:
<goal name="px:g1" sequence="1" depends="p2:g1">
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.