Plugins

Plugins are objects that can extend the functionality of bnd. They are called from inside bnd when a certain action should take place. For example, bnd uses a repository and plugins provide the actual repository implementations. Or for example, the SpringComponent analyzes the Spring files and adds references found in that XML to the imports.

A plugin is defined as:

PLUGIN ::= FQN ( ';' \<directive\|attribute\> )*

The following directive is defined for all plugin:

Directive Description
path: A path to the jar file that contains the plugin. The directory/jar at that location is placed on your classpath for that plugin.

Index

page Description Class
Plugins
Analysis Plugin A plugin to receive callbacks about analysis decisions
Ant Workspace Plugin Ensures that when a new project is created it also has a build.xml for an ant build
AspectJ Plugin Weave an executable JAR during compile time (experimental)
Blueprint Plugin Analyzes JARs for blueprint files so that any class references are added to the imports
Bndtools Rebuild Trigger Policy Plugin
Eclipse Plugin Will add .project and .classpath files to newly created projects
FileRepo Plugin Provides a bnd repository stored on the local file system
Git Workspace Plugin Ensures that certain directories have a gitignore
Gradle Workspace Plugin Provides the proper setup for a project when it is used in gradle
JAR Lifecycle Listener
Java Persistence Architecture Plugin Analyses JPA persistence.xml files and adds any discovered class to the imported packages.
Local Index Repo A Plugin for locally indexed repositories
Maven Bnd Repository Plugin A plugin to use and release to Maven repositories
OBR Index Exporter Plugin Exports OBR Index XML from a specific Bndrun file
OSGi Repository A plugin to use OSGi repositories
P2 Exporter An exporter to export features from a bnd build Project
P2 Repository A plugin to use P2 repositories
Bnd Pom Repository A plugin to use a Maven POM as a repository
Signer Plugin Provides the capability to sign files
Spring Plugin Analyzes spring files and adds any discovered classes to the imported packages.
URL Basic Authentication Plugin Provides basic authentication to the bnd's URL Connector handling
URL bnd Authentication Plugin Provides bnd authentication to the bnd's URL Connector handling
URL HTTPS Verification Plugin Verfifies that an HTTPS connection can be trusted

Registration

Plugins are registered in cnf/build.bnd or extension files:

-plugin.my-plugin = com.example.MyPlugin

Or programmatically:

workspace.addBasicPlugin(new MyPlugin());

Your plugin needs to implement an interface which is used in the bnd codebase. For examples search the code for getPlugins(SomeInterface.class) to find out which plugin interfaces are used, for which you could add a plugin implementation.

Error Handling

Most plugins follow a pattern where exceptions are logged but do not stop the build. Consult the specific plugin documentation for error behavior.

Tagging of repository plugins

Repository plugins are usually referenced in cnf/build.bnd and implement the Tagged interface.

The tags property of repositories’ configuration allows to add a comma separated list of tags to a repository. These tags will be used for filtering a list of repositories. For example the -runrepos instruction in .bndrun considers only those repositories for resolution which have either the resolve tag or no tags property defined. This allows including and excluding repositories based on their tags.