bnd, the swiss army knife for OSGi. A tool to build OSGi bundles.
Java Groovy Other
Latest commit 54963f5 Aug 14, 2017 @bjhargrave bjhargrave committed on GitHub Merge pull request #2119 from bjhargrave/gradle41
build: Update to gradlew 4.1
Failed to load latest commit information.
.gradle-wrapper build: Update gradlew to 4.1 Aug 11, 2017
.mvn/wrapper mvnw: Update to maven 3.5.0 Apr 14, 2017
aQute.libg utf8: Avoid sharing CharsetDecoders between threads Aug 10, 2017
biz.aQute.bnd.annotation charset: Use standard UTF_8 Charset object Apr 21, 2017
biz.aQute.bnd.embedded-repo embedded-repo: Allow pom Apr 20, 2016
biz.aQute.bnd.exporters Maven Bnd Repository Apr 4, 2016
biz.aQute.bnd.gradle gradle: Reduce direct references to generated folder Jul 27, 2017
biz.aQute.bnd.test build: Release to maven shaped repo Apr 21, 2016
biz.aQute.bnd.testextension build: Release to maven shaped repo Apr 21, 2016
biz.aQute.bnd close resources: More fixes to properly close resources Jul 19, 2017
biz.aQute.bndlib.comm.tests Add support for HTTPS proxies Jul 27, 2017
biz.aQute.bndlib.tests [baseline] a test for expanded return type via generics Aug 10, 2017
biz.aQute.bndlib Add support for HTTPS proxies Jul 27, 2017
biz.aQute.demo.subsys build: Clean up -buildpath/-testpath to use version=latest as appropr… Mar 27, 2017
biz.aQute.http.testservers Encrypted Maven Passwords May 11, 2017
biz.aQute.jpm charset: Use standard UTF_8 Charset object Apr 21, 2017
biz.aQute.junit test: Properly handle Test-Cases header in fragment bundles Jul 17, 2017
biz.aQute.launcher launcher: Start bundle ids at 1 for MiniFramework May 30, 2017
biz.aQute.remote remote: Fix collection to use proper object Jun 29, 2017
biz.aQute.repository.aether Revert "test: Avoid relying on IO.collect(Reader) failing to close re… Apr 19, 2017
biz.aQute.repository repo: Set result artifact for MavenBndRepository Jul 26, 2017
biz.aQute.resolve.test build: Clean up -buildpath/-testpath to use version=latest as appropr… Mar 27, 2017
biz.aQute.resolve Merge pull request #2056 from rotty3000/resolver.failure.distinguish May 24, 2017
biz.aQute.tester Support OSGi 4.2 runtimes with junit/tester/launcher Apr 7, 2017
cnf Add support for HTTPS proxies Jul 27, 2017
demo-fragment build: Remove binary demo jars from repo Feb 10, 2017
demo test: Move demo test output so Jenkins does not see it and complain Mar 7, 2017
dist build: Pass closure instead of fileTree to inputs Jun 23, 2017
docker bnd command Docker Image Dec 9, 2016
docs Document -runrequires plus new aliases May 30, 2017
maven build: Update task dependencies for maven portion of build Aug 11, 2017
org.osgi.impl.bundle.repoindex.ant properties: Make sure to close input since Properties load does not Apr 19, 2017
org.osgi.impl.bundle.repoindex.api baseline: Enable baselining in most projects Feb 20, 2017
org.osgi.impl.bundle.repoindex.cli Avoid new FileOutputStream Apr 12, 2017
org.osgi.impl.bundle.repoindex.lib charset: Use standard UTF_8 Charset object Apr 21, 2017
org.osgi.impl.bundle.repoindex.test repoindex test: Project depends on tester and launcher to run OSGi tests Apr 12, 2017
.gitattributes gitattributes: Add .bndrun files Dec 7, 2015
.gitignore Ignore the .recommenders directory Jan 10, 2017
.mailmap .mailmap: Add name for Ray Nov 30, 2015
.travis.yml travis: Specify precise dist so travis does not use trusty Jul 19, 2017 build: Update all projects to Java 7 Dec 15, 2016
LICENSE license: Add a LICENSE file for Apache License 2.0 Dec 10, 2015 readme: link mail lists to the google groups Feb 2, 2017 repoindex: Add readme file from old bindex repo Nov 19, 2014
appveyor.yml build: Cache m2 and gradle cache Oct 5, 2016
build.gradle build: Avoid javac warnings about bootstrap version May 22, 2017 gradle: Remove preCompileRefresh Apr 3, 2017
gradlew build: Update gradlew to 4.0.1 Jul 26, 2017
gradlew.bat gradlew: Update to gradle 3.0 Aug 15, 2016
mvnw mvnw: Add maven wrapper to build - mvn version 3.3.9 Aug 16, 2016
mvnw.cmd mvnw: Add maven wrapper to build - mvn version 3.3.9 Aug 16, 2016
rebuild-with-local-plugin rebuild: Change default target now that we release to maven repo Apr 22, 2016
settings.gradle build: Use new biz.aQute.bnd.workspace Gradle plugin Mar 13, 2017


bnd is a swiss army knife for OSGi, it creates manifest headers for you based on analyzing the class code, it verifies your settings, it manages project dependencies, gives you quote of the day, diffs jars, and much more.

The information about bnd can be found at


The git repository contains all code. It contains the following projects:

  • aQute.libg - Library to be statically linked (Conditional-Package)
  • biz.aQute.bnd - A command line utility and ant plugin
  • biz.aQute.bndlib - The core library
  • biz.aQute.bndlib.tests - Tests for the core library
  • biz.aQute.jpm - Just another package manager for Java
  • biz.aQute.junit - Junit tester
  • biz.aQute.launcher - Launcher
  • biz.aQute.repository - Different repos with OBR
  • biz.aQute.resolve - OBR Resolver
  • cnf - Configuration directory
  • demo - Used in testing
  • dist - Contains the distribution after 'gradle'
  • docs - GitHub Pages manual for Bnd


All code is Apache 2.0 Licensed so you can do what you want with the source code.


Though I am usually pretty good at backward compatibility, there is no guarantee. This is an unpaid project and one of the most annoying thing of work is being backward compatible on the Java API when you know a better way to do it. Properties will be backward compatible if there is any possibility. So be aware, its ok to use this package but do not complain if new releases require some work.

If you're building a tool with a general audience, e.g. bndtools, that includes bnd for a general audience I would appreciate if you got in touch with me so I can keep in touch. I am always interested in ideas.


bndtools is the development environment of bnd. An earlier Eclipse plugin in bnd is no longer available.


Gradle is used to build bnd. The workspace root has a build.gradle file that builds all projects in proper order.

./gradlew - Assembles, tests and releases the projects into dist/bundles
./gradlew :dist:build - Assembles and tests the projects
./gradlew :dist:index - Assembles and releases the projects into dist/bundles

The workspace root includes the gradle wrapper, gradlew, command.

CloudBees Build Status Travis CI Build Status


bnd is continuously built and released on CloudBees.

A Maven repository of the latest build is available at A snapshot version of all the bundles and Maven and Gradle plugins is there.

Built on DEV@cloud


Feedback is always welcome, for general discussions use the mail list. We also have the mail list for discussions on the development of bnd.

Bugs and issues should go to

Other feedback or specific functionality send to


Want to hack on bnd? There are instructions to get you started.

They are probably not perfect, please let us know if anything feels wrong or incomplete.


YourKit supports open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.