Here's a quick one to help me feel a better about not posting anything for quite a while.
In our large project at work that contains several deployed services, we have several parent integration testing Maven modules that run after our nightly development install. Each has several child modules that each run tests against a particular endpoint in each service.
So naturally, we want our build server to kick off each parent testing module after the install. The problem we ran into is when that one of the earlier child modules failed, the build will stop, without running the rest of the modules (Maven's default behavior).
This would often lead to us making changes to get the tests in the failing module to pass, then re-running the testing build, only to have a later child module to fail. It would be nice to have had all the modules to run, reporting all failures, so that all the required changes and fixes could be made up front, saving us time.
Fortunately, Maven provides an option we learned about do just that:
-fae,--fail-at-end Only fail the build afterwards; allow all non-impacted builds to continue
There are also a couple more failure related options as well, but we have yet to find any use for them (yet):
-ff,--fail-fast Stop at first failure in reactorized builds -fn,--fail-never NEVER fail the build, regardless of project result
When working on the tests locally, we can pick up the build from within the parent from the point of the failed chilid module after making changes to our running service to fix the test with:
-rf,--resume-from Resume reactor from specified project
For example:
$ mvn verify -rf :service-integration-testing-records
For more on working with multiple modules, see: Guide to Working with Multiple Modules.
ReplyDeleteYour blog is very nice rf services