I want to - build my maven modules top-down using snapshot dependencies among each other - start my appserver with cargo - run the integration-tests and - keep the appserver running afterwards.
A simplified project structure might look like this pom.xml |_ moduleA |_ moduleB |_ moduleC |_ appserver Typically, one uses cargo plugin in the "appserver" project like this: <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <executions> <execution> <id>start-container</id> <phase>pre-integration-test</phase> <goals> <goal>start</goal> <goal>deploy</goal> </goals> </execution> <execution> <id>stop-container</id> <phase>post-integration-test</phase> <goals> <goal>stop</goal> </goals> </execution> </executions> ... Let's assume I changed "moduleB" and want to build "moduleB" and all its dependencies: $ mvn clean install -pl moduleB -amd This will create a reactor like this, taking down the appserver afterwards: - moduleB - moduleC - appserver In order to keep the appserver running, I would have to run the phase "integration-test" so that the phase "post-integration-test" will not be executed and the appserver keeps running. But when I do this in the multi-project build, "install" will not be executed on moduleA and moduleB, causing the local repository not to be updated, which in turn will not start the appserver with the most up-to-date snapshots, right? I assume I need to move the cargo plugin to a custom profile "run-appserver-and-shutdown" and duplicating the plugin to a 2nd one named "run-appserver-and-keep-running", invoke one or the other depending on what I want: $ mvn clean install -pl moduleB -amd -Prun-appserver-and-shutdown $ mvn clean install -pl moduleB -amd -Prun-appserver-and-keep-running Is there any simpler and cleaner solution? Thanks a lot, Jonas