11.4 Maven plugin

To support the development of OSGi bundles for Eclipse Virgo with Maven a Maven plugin is available. This plugin is able to start/stop a local Eclipse Virgo instance. Moreover it is possible to deploy/undeploy/refresh bundles via Maven.


In order to use the plugin one has to download the source code from Github&nbsp;and build the binary manually. This can be easily done by executing the following Maven command in the root folder of the plugin where the pom.xml file is located. < pre>mvn clean install</pre> Moreover to generate the documentation just execute the following Maven command (or take the one provided in the repository on Github). < pre>mvn clean&nbsp;plugin:xdoc javadoc:javadoc jxr:jxr site < /pre>


The plugin provides a set of Maven goals that allow different actions.

Goal Description
<code>virgo:start</code> Starts a Virgo instance by executing the provided startup script. <br>
<code>virgo:shutdown</code> Stops a running Virgo instance.
<code>virgo:immediateShutdown</code> Stops a running Virgo instance immediately.
<code>virgo:deploy</code> Deploys an OSGi bundle to a running Virgo instance.
<code>virgo:undeploy</code> Undeploys an OSGi bundle from a running Virgo instance.
<code>virgo:refresh</code> Refreshs an already installed module on a running Virgo instance.
<code>virgo:bundleRefresh</code> Refreshs an already installed OSGi bundle on a running Virgo instance.

Simple example POM

Once the plugin has been build and installed in the local Maven repository it can be used within a Maven project. Following is a simple example of a pom file that uses the Maven plugin.&nbsp; < pre>&lt;project xmlns=" http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation=" http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&amp;gt; &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt; &lt;groupId&gt;org.example.osgi&lt;/groupId&gt; &lt;artifactId&gt;test-bundle&lt;/artifactId&gt; &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt; &lt;packaging&gt;bundle&lt;/packaging&gt; &lt;name&gt;OSGi Test Bundle&lt;/name&gt; &lt;properties&gt; &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt; &lt;/properties&gt; &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.apache.felix&lt;/groupId&gt; &lt;artifactId&gt;maven-bundle-plugin&lt;/artifactId&gt; &lt;version&gt;2.3.6&lt;/version&gt; &lt;extensions&gt;true&lt;/extensions&gt; &lt;configuration&gt; &lt;instructions&gt; &lt;Bundle-SymbolicName&gt;${project.groupId}.${project.artifactId}&lt;/Bundle-SymbolicName&gt; &lt;Bundle-Name&gt;${project.name}&lt;/Bundle-Name&gt; &lt;Bundle-Version&gt;${project.version}&lt;/Bundle-Version&gt; &lt;/instructions&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;plugin&gt; &lt;groupId&gt;net.flybyte.virgo&lt;/groupId&gt; &lt;artifactId&gt;virgo-maven-plugin&lt;/artifactId&gt; &lt;version&gt;1.0.0&lt;/version&gt; &lt;configuration&gt; &lt;virgoRoot&gt;C:/Java/virgo-tomcat-server-3.0.2.RELEASE&lt;/virgoRoot&gt; &lt;/configuration&gt; &lt;/plugin&gt; &lt;/plugins&gt; &lt;/build&gt; & lt;/project&gt; < /pre> More examples can be found in the documentation. Following are some exemplary Maven commands. < pre>mvn virgo:start &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;-- will start a Virgo instance mvn clean package virgo:deploy &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;-- will create an artifact and deploy it to Virgo</pre>