This is a draft of possible migration to OSGi |
Manifest attributes
Sonar Plugin - https://github.com/SonarSource/sonar-update-center/blob/master/sonar-update-center-common/src/main/java/org/sonar/updatecenter/common/PluginManifest.java
OSGi Bundle - http://www.osgi.org/javadoc/r4v42/index.html?org/osgi/framework/Constants.html
Sonar Plugin |
OSGi Bundle |
Notes |
|---|---|---|
Plugin-Key |
Bundle-SymbolicName |
|
Plugin-Version |
Bundle-Version |
|
Plugin-Class |
Bundle-Activator ? |
|
Plugin-Name |
Bundle-Name |
|
Plugin-Description |
Bundle-Description |
|
Plugin-Homepage |
Bundle-DocURL |
|
Plugin-Dependencies |
Bundle-ClassPath |
|
Plugin-ChildFirstClassLoader |
not needed |
|
Plugin-Base |
Fragment-Host |
Fragment bundle can't be referenced from another manifest. Fragment bundle cannot load classes. Fragment treated as optional bundle. |
Sonar-Version |
Require-Bundle |
|
"org.sonar.plugin.<key>.api.*" |
Export-Package |
|
Plugin-License |
Bundle-Copyright |
|
Plugin-BuildDate |
|
|
Plugin-IssueTrackerUrl |
Bundle-ContactAddress |
|
Plugin-Organization |
Bundle-Vendor |
|
Plugin-TermsConditionsUrl |
|
|
|
Bundle-UpdateLocation |
Usage
We have a lot of routines for installation and uninstallation of plugins and for creation of classloaders.
Here is example how to launch embedded Equinox ( org.eclipse.osgi:org.eclipse.osgi:3.6.0.v20100517 - no additional dependencies, size about 1 Mb ) :
OSGi also provides routines to correctly compare versions - see http://www.osgi.org/javadoc/r4v42/index.html?org/osgi/framework/Version.html.

