2008/11/10 Paul Gier <[EMAIL PROTECTED]> > Stephen Connolly wrote: > >> 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. >> >> >> > I was imagining that the interaction with the phases wouldn't change from > how it is now. For example: > > mvn eclipse:eclipse{execution-1} > > This would behave the same way it does now (calls the genereate-resources > phase then the eclipse goal) except that it would look for relevant > configuration in execution-1. And of course merge that with the global > plugin config. > But it would ignore the phase and goals settings of the execution. >
Ahh, no what eclipse:eclipse does currently is that it forkes the build to call the lifecycle up to generate-sources (or is it generate-test-sources) This is why I think eclipse:eclipse is a *bad example* A better example is the compiler plugin. If we had lifecycle:<phase> or lifecycle:<packaging>:<phase> we would not need separate goals for compile and test-compile (of course we have the minor problem of how to specify in the lifecycle that when bound to test-compile we use different source and output dirs) If you execute mvn compiler:compile outside of the lifecycle on a project that generates sources you'll see why context becomes important. > > > 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] >>> >>> >>> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >