2008/11/10 Paul Gier <[EMAIL PROTECTED]>
> What about adding new syntax to the goal string? So that from the command
> line you could write something like this to refer to specific execution
> configs:
>
> mvn eclipse:eclipse{execution-1}
> or
> mvn eclipse:eclipse{execution-2}
>
How would that interact with the lifecycle?
If I define execution-1 as attached to the compile phase, does that mean
that Maven will execute all phases upto compile and then just execute
eclipse:eclipse, or is it just executing eclipse:eclipse and ignoring any
plugins that are attached to prior phases? (With the side effect that I'd
loose the information of the extra attached source directories)
The more I think about it, calling out a specific execution *that has been
attached to a specific phase* is a bad bad pattern, and it's a good thing
that Maven does not let you do that.
If you need to do a pile of every-so-often tasks I'd define them in profiles
with each profile attaching the plugins to the requisite phases and defining
the defaultGoals to the highest phase necessary.
>
> The curly braces already seem to be associated with execution ids in
> maven's logging output. This would mean that components.xml file in maven
> core could be changed to provide execution IDs for each plugin that is
> executed, but probably no one wants to manually update this all the time.
>
> IMO the wildcard syntax is more than what is needed, and will make the pom
> a little less readable. The choice should be configure all executions or
> just one, otherwise it starts getting too complicated.
>
> After looking into the current behavior a little more, it is possible to
> execute the same plugin goal twice in the same phase. So I think all the
> naming schemes proposed except maybe Brett's
> (groupId:artifactId:sequenceNumber) could run into conflicts in the future.
> But if we include a sequence number, then what happens if you add another
> execution of an existing plugin to the lifecycle? Do all the sequence
> numbers have to increment to make room?
>
Plus sequence number is non-deterministic. Also, you are forgetting... this
is not the id of executions *defined within the pom* but it's the id of
executions *defined by either the lifecycle or the plugin's mojo bindings*
I don't see how a mojo's descriptor can bind to any more than one phase, so
I guess the only thing preventing uniqueness is if the lifecycle can invoke
the same goal multiple times in the same phase... but hang on, how is that a
problem if we say that the execution is per phase (unless you want to
configure the different multiple executions differentially.... sounds like
you're writing a severe hack)
> I think if we add the goal name to the execution like Benjamin suggested,
> we will be unlikely to run into conflicts. So I would prefer something
> like:
>
> default-lifecycle-compile
> default-lifecycle-testCompile
>
No, what if I bind compile goal to the compile phase and process-classes?
Now I have an execution that is bound to two phases (not allowed) or two
executions with the same id (not allowed)
I'm sorry, but I don't see how you can exclude the phase from the
execution's id...
And given that phases consist of names separated by -, it seems confusing to
name them with - as a separator.
Now I don't mind if we do
default-lifecycle:compile
default-lifecycle:test-compile
or
lifecycle:compile
lifecycle:test-compile
or
lifecycle:jar:compile
lifecycle:jar:test-compile
or even use a different separator ('/' anyone?)
The only advantage of specifying the packaging type is if you have a common
root pom. Wildcards only become really important if you use packaging in
the id, but there is still the issue of what if I need to specify something
for all executions (but keep the defaults outside of an execution different
for when executing goals directly from the command line)
I can live without wildcards.
Sequence numbers are either non-deterministic, or will end up having a 1:1
mapping with each phase, so why not just use the phase. Goal is non-unique,
and has the problem of multiple executions, and we can likely get away with
just phase anyway.
> When building, this logs to the command line like this:
> [INFO] [compiler:compile {execution: default-lifecycle-compile}]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>