Multiple executions of Maven with a single run

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Multiple executions of Maven with a single run

Enrico Olivelli
Hello,
Sometimes it happens that you have to launch twice Maven to:
- build a whole reactor project (warmup)
- run some specific mojo only a selection of modules

mvn clean install -DskipTests -Dmaven.repo.local=tmprepo

mvn do:something -pl module1,module1-Dmaven.repo.local=tmprepo

I think that in the general case there is no way to do this with one single
execution of Maven, for instance from CI.

I am thinking about a simple enhancement to workaround this problem:
We can let Maven executable to accept a list of command line execution
arguments and loop executing the list, halting at the first failure
Reply | Threaded
Open this post in threaded view
|

Re: Multiple executions of Maven with a single run

Romain Manni-Bucau
Out of my head, reusing the cli/clibuilder was easier and avoids all the
fork config we want to avoid for such command but guess both work.

Le sam. 11 janv. 2020 à 14:11, Enrico Olivelli <[hidden email]> a
écrit :

> Romain
>
> Il giorno dom 5 gen 2020 alle ore 18:14 Romain Manni-Bucau <
> [hidden email]> ha scritto:
>
> > Hi Enrico
> >
> > Technically concatenating all goals for all modules will do it but will
> be
> > quite long - guess it is why we do it in 2 times.
> >
> > That said i always wondered why maven can read commands from a file/stdin
> > as any unix like soft so it would be something like:
> >
> > mvn --commands-file ci.cmdlist
> >
> > Using stdin/echo it would also match ypur ci need maybe?
> >
>
> (I am sorry, It seems that my original email was truncated or the email
> client sent some draft of the email.)
>
> This is exactly my second proposal.
>
> Currently I am also thinking that this can simply be a new mojo of the
> 'invoker' plugin
>
> mvn invoker:commandlist -Dcommandlist=/path/tofile
> or getting the list from stdin
>
> I have never dug into invoker but it seems to me that it should have all of
> the facilities to perform this task.
> The only challenge I see is about Java System properties to be set at
> bootstrap time, like -Dfile.encoding....
> but the Invoker plugin may fork new JVMs so it should not be a big problem
> and btw it is a secondary issue
>
> Enrico
>
>
>
>
>
> >
> >
> > Le dim. 5 janv. 2020 à 17:31, Enrico Olivelli <[hidden email]> a
> > écrit :
> >
> > > Hello,
> > > Sometimes it happens that you have to launch twice Maven to:
> > > - build a whole reactor project (warmup)
> > > - run some specific mojo only a selection of modules
> > >
> > > mvn clean install -DskipTests -Dmaven.repo.local=tmprepo
> > >
> > > mvn do:something -pl module1,module1-Dmaven.repo.local=tmprepo
> > >
> > > I think that in the general case there is no way to do this with one
> > single
> > > execution of Maven, for instance from CI.
> > >
> > > I am thinking about a simple enhancement to workaround this problem:
> > > We can let Maven executable to accept a list of command line execution
> > > arguments and loop executing the list, halting at the first failure
> > >
> >
>