Home Tutorials Training Consulting Products Books Company Donate Contact us

Get more...

Training Events

This tutorial describes the purpose and usage of Eclipse fragment projects

1. Using fragment projects

1.1. What are fragments in OSGi?

A fragment is an optional attachment to another plug-in. This other plug-in is called the host plug-in. At runtime the fragment is merged with its host plug-in and for the runtime both projects are just one. Fragments are always optional for their host plug-in and the host plug-in doesn’t even know that it exists.

The Eclipse IDE supports the creation of fragments via fragment projects. To create a fragment project select File  New  Other…​  Plug-in Development  Fragment Project.

1.2. Typical use cases for fragments

Fragments can be used to contain test classes. This way the tests can access the host plug-in classes, even if the host plug-in does not define them as external API. Sometimes tests are also contained in normal plug-ins, in this case they can only test the external API of other plug-ins.

Fragments can also be used to contribute property files for additional translations. This allows contributing support for a new language without the need to adjust any other part of the code.

In addition, fragments can also supply native code which is specific to a certain system environment.

A platform filter can be used to define a fragment as valid for a certain platform. The Eclipse user interface library SWT uses this approach. More information on the platform filter can be found in the Eclipse help system if you search for the following term: "OSGi Bundle Manifest Headers".

Last but not the least, fragments can be used to contain resources like icon sets or other images. This allows you to customize your application icons via the provided fragment.

Nothing listed.

3. vogella training and consulting support

Copyright © 2012-2019 vogella GmbH. Free use of the software examples is granted under the terms of the Eclipse Public License 2.0. This tutorial is published under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Germany license.