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 http://www.aQute.biz/Bnd
The git repository contains all code. It contains the following projects:
1) bndlib - Core library function, also contains most tests
2) bnd - Command line tool, eclipse plugin, and ant plugin
3) launcher - A launcher plugin for bnd
4) libg - Small, simple library utilities that are useful outside bnd
5) junit - A tester plugin for JUnit 3.8 testing for bnd
6) cnf - The bnd project directory, contains the repo with dependencies
7) demo - A project used in testing
8) compiler - A wrapped version of the eclipse java compiler
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.
bnd is build with itself, which can create some headaches. Overall, you want
to your work therefore in Eclipse with a recent bnd.jar in the Eclipse dropins
folder. Currently, bndtools is not yet ready for bnd itself :-( however, that is
being worked on. Once bndtools handles the bnd launcher/tester then the eclipse
plugin will be removed. Until that moment, we need to use the old code in Eclipse.
It is advised to not mix bnd and bndtools but use different instances of Eclipse.
The workspace root has a build.xml that builds all project in proper order. Due
to the fact that bnd builds itself there are certain cases where you get an error
during build. Trying again should fix the issue.
Each project directory has a build.xml. The following targets are available:
ant build (default) - Build
ant clean - Clean the project
ant test - Run a bnd OSGi test
ant junit - Run standard JUnit tests in the test package
Outputs are stored in the tmp directory in the different projects.
The main tests are in the bndlib project. These are standard JUnit tests. They
are all in the src/test directory. Tests are quite extensive and run from the
Eclipse JUnit screen.
The current release process could use some work. The following steps are used:
1) Changes to the tree are made on the next branch
2) After the next branch is done, commit all changes. There are a few
files changed by tests that should not be committed every time:
This needs fixing btw. The test should not touch those files or at least restore
3) Switch to master
4) ant clean build
5) run the tests
6) if successful, release the jars
7) bump the version (bnd bump command does this)
8) switch to next branch
This process is likely to change because it contains too many manual steps
Feedback is always welcome, for general discussions use email@example.com
Bugs and issues should go to https://github.com/bndtools/bnd
Other feedback or specific functionality send to Peter.Kriens@aQute.biz
Donations should go to http://pledgie.com/campaigns/10548