Artifacts repositories and URLs
The main information provided by a feature is the set of OSGi bundles that defines the application. Such bundles are URLs pointing to the actual bundle jars. For example, one would write the following definition:
<bundle>http://repo1.maven.org/maven2/org/apache/servicemix/nmr/org.apache.servicemix.nmr.api/1.0.0-m2/org.apache.servicemix.nmr.api-1.0.0-m2.jar</bundle>
Doing this will make sure the above bundle is installed while installing the feature.
However, Karaf provides several URL handlers, in addition to the usual ones (file, http, etc…). One of these is the Maven URL handler, which allow reusing maven repositories to point to the bundles.
You can deploy bundles from file system without using Maven
As we can use file: as protocol handler to deploy bundles, you can use the following syntax to deploy bundles when they are located in a directory which is not available using Maven
<bundle>file:base/bundles/org.apache.servicemix.nmr.api-1.0.0-m2.jar</bundle>
Note
|
The path is relative to the Apache Karaf installation directory |
Maven URL Handler
The equivalent of the above bundle would be:
<bundle>mvn:org.apache.servicemix.nmr/org.apache.servicemix.nmr.api/1.0.0-m2</bundle>
In addition to being less verbose, the Maven url handlers can also resolve snapshots and can use a local copy of the jar if one is available in your Maven local repository.
The org.ops4j.pax.url.mvn
bundle resolves mvn
URLs. It can be configured using the file etc/org.ops4j.pax.url.cfg
The most important property is :
-
org.ops4j.pax.url.mvn.repositories
: Comma separated list of repository remote repository URLs that are checked in order of occurence when resolving maven artifacts
By default, snapshots are disabled. To enable an URL for snapshots append @snapshots to a repository entry. For example
http://www.example.org/repo@snapshots
Repositories on the local machine are supported through file:/
URLs.