D. W.
D. W.

Reputation: 31

Get State of Maven Execution within Shell Script

I'd like to know whether there's a way to kind of 'query' the state of an Maven execution from within a Shell script (used for build process).

The point is that I would like to let the whole build script fail as soon as a single error appears within one of the Shell scripts Maven executions.

e.g.

(0) mvn -f .../someDir clean
(1) mvn -f .../1/pom.xml install
(2) mvn -f .../2/pom.xml -PgenerateWadl

So if e.g. there occurs an error within (0), then (1) and (2) must no more be executed, but instead the build script should quit with an error message directly after (0).

I'm not THAT much into Shell scripting, but I know of the $? variable to get the return value of an earlier execution. But as Maven simply seems to write errors out to the console, this might not work, does it?

I would have liked to research more information concerning the "$?", but it's quite hard to google for it.

Upvotes: 3

Views: 2749

Answers (2)

Emil Sit
Emil Sit

Reputation: 23542

A simple way is to use the -e option.

set -e
mvn -f .../somedir clean
mvn -f .../otherdir install
mvn -f .../thirddir -PgenerateWadl package

This will automatically have the shell exit with error if any command in sequence exits with a non-zero status (unless it is part of an explicit test such as an if or while or a chain like a || b).

You can watch this happen by inserting a call to false between any of the Maven calls.

See the set POSIX spec for details on set -e.

Upvotes: 6

Dennis Williamson
Dennis Williamson

Reputation: 360065

mvn ... && mvn ... && mvn ...

The execution will only proceed if the previous one was successful.

Upvotes: 2

Related Questions