sbt / sbt-osgi

sbt plugin for creating OSGi bundles
Apache License 2.0
47 stars 43 forks source link
osgi sbt sbt-plugin

sbt-osgi

Build Status

Plugin for sbt to create OSGi bundles.

Installing sbt-osgi

sbt-osgi is a plugin for sbt. In order to install sbt, please refer to the sbt 1.x). Please make sure that you are using a suitable version of sbt:

As sbt-osgi is a plugin for sbt, it is installed like any other sbt plugin, that is by mere configuration: just add sbt-osgi to your global or local plugin definition. Global plugins are defined in ~/.sbt/<SBT_VERSION>/plugins/plugins.sbt and local plugins are defined in project/plugins.sbt in your project.

In order to add sbt-osgi as a plugin, just add the below setting to the relevant plugin definition, paying attention to blank lines between settings:

// Other stuff

addSbtPlugin("com.github.sbt" % "sbt-osgi" % "0.9.11")

If you want to use the latest and greatest features, you can instead have sbt depend on and locally build the current source snapshot by adding the following to your plugin definition file. Example <PROJECT_ROOT>/project/plugins.sbt:

lazy val plugins = (project in file("."))
  .dependsOn(sbtOsgi)

// Other stuff

def sbtOsgi = uri("git://github.com/sbt/sbt-osgi.git")

Using sbt-osgi

Version 0.8.0 and above

As, since version 0.8.0, sbt-osgi uses the sbt 0.13.5 Autoplugin feature, it can be enabled for individual projects like any other sbt Autoplugin. For more information on enabling and disabling plugins, refer to the sbt plugins tutorial.

Example <PROJECT_ROOT>/build.sbt:

enablePlugins(SbtOsgi)

To also override the default publish behaviour, also add the osgiSettings settings to your project via your preferred method.

Example <PROJECT_ROOT>/build.sbt:

// Other settings

osgiSettings

Version 0.7.0 and below

Add the below line to your sbt build definition, which adds the task osgiBundle which creates an OSGi bundle for your project and also changes the publish task to publish an OSGi bundle instead of a raw JAR archive. Again, pay attention to the blank line between settings:

// Other stuff

osgiSettings

If you just want osgiBundle, i.e. don't want to change the behavior of publish:

// Other stuff

defaultOsgiSettings

Settings

sbt-osgi can be configured with the following settings:

Example build.sbt:

organization := "com.github.sbt"

name := "osgi.demo"

version := "1.0.0"

enablePlugins(SbtOsgi)

libraryDependencies += "org.osgi" % "org.osgi.core" % "4.3.0" % "provided"

osgiSettings

OsgiKeys.exportPackage := Seq("com.github.sbt.osgidemo")

OsgiKeys.bundleActivator := Option("com.github.sbt.osgidemo.internal.Activator")

License

This code is open source software licensed under the Apache 2.0 License.