Apache Felix Bundle Maven Plugin
Copyright 2006-2008 The Apache Software Foundation


I. Included Software

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
Licensed under the Apache License 2.0.

This product includes software developed at
The OSGi Alliance (http://www.osgi.org/).
Copyright 2006-2008 The OSGi Alliance.
Licensed under the Apache License 2.0.


II. Used Software

This product uses software developed by Peter Kriens
(http://www.aqute.biz/Code/Bnd)
Copyright 2006-2008 aQute, All rights reserved
Licensed under the Apache License 2.0.

This product uses software developed at
The OSGi Alliance (http://www.osgi.org/).
Copyright 2006-2008 The OSGi Alliance.
Licensed under the Apache License 2.0.

This product uses software developed at
The Apache Software Foundation (http://www.apache.org/).
Licensed under the Apache License 2.0.

This product uses software developed at
The Codehaus (http://www.codehaus.org)
Licensed under the Apache License 2.0.

This product uses software from http://kxml.sourceforge.net.
Copyright (c) 2002,2003, Stefan Haustein, Oberhausen, Rhld., Germany.
Licensed under the BSD License.


III. License Summary
- Apache License 2.0
- BSD License
