Maven POM Scanner

Overview

The pom scanner installs and optionaly starts a set of bundles listed in maven 2 pom file. The set of bundles to be installed is composed out of main artifact of the project (if not an pom) and all dependencies of type jar (= default type in maven) or bundle that do not have a scope of "test".

Syntax

scan-pom:pom_xml_url[@start_level][@nostart][@update]

where:

  • pom_xml_url : mandatory; is the url of the #pom;
  • start_level : optional; an integer representing the start level of the bundles present in the pom.
    If present and OSGi Start Level Service is available then the bundle is installed with that specific start level.
    This option overwrites the startLevel #configuration property;
  • nostart : optional; this should be the hardcoded string "nostart" (not case sensitive).
    If present the bundles will not be started.
    This option overwrites the start #configuration property;
  • update : optional; the hardcoded string "update" (not case sensitive)
    If present the bundles will be updated.
    This option overwrites the update #configuration property;

Examples

  • scan-pom:mvn:org.ops4j.pax.web.bundles/service/LATEST/pom - installs the latest pax web service.
  • scan-pom:file:/C:/my-project/pom.xml - installs the bundles contained in the pom of my-project located on local drive.
  • scan-pom:zip:file:/C:/bundles.zip\!/pom.xml - installs the bundles contained the specified pom.xml from a distribution zip file located on the local drive.

File Format

The pom file must comply to the maven project object model specification.

If the pom file contains properties those will be carried into the OSGi platform. The value can contain place holders as ${name} where name is the name of the property the ${name} placeholder will be replaced with.
For instance, if you are deploying an OSGi HTTPService (as the example above is doing) you might want to set the port of the Http listener. You do that in the application POM like this:

<project>
  ...
  <properties>
    <org.osgi.service.http.port>2080</org.osgi.service.http.port>
    <org.osgi.service.http.port.secure>2443</org.osgi.service.http.port.secure>
  </properties>
  ...
</project>
File Examples

Any valid maven pom.

Configuration

The service can be configured in two ways: via configuration admin if available and via framework/system properties where the configuration via config admin has priority.

Option key

Description

org.ops4j.pax.runner.scanner.pom.startlevel

optional; default start level.

org.ops4j.pax.runner.scanner.pom.start

optional; true/false - if installed bundles should be started ot not. Default value is true, so the bundles are started.

org.ops4j.pax.runner.scanner.pom.update

optional; true/false - if installed bundles should be updated or not. Default value is false, so the bundles will not be updated.