Modules
What you will learn in this section
So far we’ve treated each project as standalone. By running Maven manually we were responsible for building the different projects in the right order. This clearly does not scale well; even for small projects you often find that you compiled against a previous incarnation.
In this section we will make our parent pom also a module pom. This is a pom that contains all our modules and will automatically build the projects in the right order.
Make sure you are in the top directory:
$ cd ~/workspaces/osgi.enroute.examples.eval
The Module POM
Maven projects can inherit from a parent pom. Though it is theoretically possible to have a different parent pom than a module pom, there seems to be a number of problems when they are not the same. For this reason, we setup the module project as the parent pom.
Adjusting Module Pom
In the default directory (~/osgi.enroute.examples.eval/
) we create a pom.xml
file. It has the following content.
osgi.enroute.examples.eval $ vi pom.xml
// Add the module section after the `<packaging/>` element.
The modules
element must fall directly under the project
element.
<modules>
<module>api</module>
<module>simple.provider</module>
<module>parsii.provider</module>
<module>command</module>
<module>application</module>
<module>bndrun</module>
<module>test</module>
<module>integration-test</module>
</modules>
Verify
After you created the pom.xml file you should verify that it all is ok.
osgi.enroute.examples.eval $ mvn install
[INFO] Scanning for projects...
...
Test parsii.bndrun
Tests run : 1
Passed : 1
Errors : 0
Failures : 0
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ osgi.enroute.examples.eval.integration-test ---
[INFO] Installing /Ws/enroute/osgi.enroute.examples.eval/integration-test/pom.xml to /Users/aqute/.m2/repository/org/osgi/osgi.enroute.examples.eval.integration-test/1.0.0-SNAPSHOT/osgi.enroute.examples.eval.integration-test-1.0.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] osgi.enroute.examples.eval ......................... SUCCESS [ 0.252 s]
[INFO] osgi.enroute.examples.eval.api ..................... SUCCESS [ 0.808 s]
[INFO] osgi.enroute.examples.eval.simple.provider ......... SUCCESS [ 0.484 s]
[INFO] osgi.enroute.examples.eval.command ................. SUCCESS [ 0.044 s]
[INFO] osgi.enroute.examples.eval.parsii.provider ......... SUCCESS [ 0.204 s]
[INFO] osgi.enroute.examples.eval.application ............. SUCCESS [ 0.086 s]
[INFO] osgi.enroute.examples.eval.bndrun .................. SUCCESS [ 5.412 s]
[INFO] osgi.enroute.examples.eval.test .................... SUCCESS [ 0.041 s]
[INFO] osgi.enroute.examples.eval.integration-test ........ SUCCESS [ 3.019 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
...
Since the output of mvn is quite, lets say, verbose, we will only show relevant parts in the
following sections. Any skipped parts will be indicated with ...
.
What You’ve Learned
In this section we made the parent pom also a module pom. By adding a modules
section with the projects we created we can now build all the projects in the right
order with a single command.
Prev Next