• Guide Tutorials Examples Services App notes Links FAQ Forum
  • Guide
    Tutorials
    Example Projects
    Documentation
    Service Catalog
    OSGi Specifications
    App Notes
    Where to Find Stuff
    Videos
    Known Issues
    Frequently Asked Questions
  • Prev Next

    This website and its associated repositories, are deprecated and no longer supported by the OSGi Alliance. Please visit https://enroute.osgi.org for the latest supported version of OSGi enRoute.

    This enRoute v2 archive site is kept for those who do not intend to use the latest version of OSGi enRoute. If you are new to OSGi enRoute, then please start with the latest OSGi enRoute.

    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
    • Copyright © 2021 OSGi™ Alliance.