OSGi-based plugin system, including online updates. Written for Apache Taverna (incubating), probably usable for any OSGi-based command line/desktop product.
- (c) 2007-2014 University of Manchester
- (c) 2014-2016 Apache Software Foundation
This product includes software developed at The Apache Software Foundation.
Licensed under the Apache License 2.0, see the file LICENSE for details.
The file NOTICE contain any additional attributions and details about embedded third-party libraries and source code.
Please subscribe to and contact the [dev@taverna](http://taverna.incubator.apache.org/community/lists#dev mailing list) for any questions, suggestions and discussions about Apache Taverna.
Bugs and feature plannings are tracked in the Jira
Issue tracker
under the TAVERNA
component Taverna Common Activities. Feel free
to add an issue!
To suggest changes to this source code, feel free to raise a GitHub pull request. Any contributions received are assumed to be covered by the Apache License 2.0. We might ask you to sign a Contributor License Agreement before accepting a larger contribution.
Apache Taverna is an effort undergoing incubation at the Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC.
Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects.
While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
- Java 1.8 or newer (tested with OpenJDK 1.8)
- Apache Maven 3.2.5 or newer (older versions probably also work)
To build, use
mvn clean install
This will build each module and run their tests.
To skip the tests (these can be timeconsuming), use:
mvn clean install -DskipTests
If you are modifying this source code independent of the Apache Taverna project, you may not want to run the Rat Maven plugin that enforces Apache headers in every source file - to disable it, try:
mvn clean install -Drat.skip=true
The Taverna OSGi modules are split into -api
and -impl
. -api
contain
Java interfaces and abstract classes and minimal dependencies, while -impl
contain the corresponding implementation(s).
- taverna-app-configuration-api - Apache Taverna Application Configuration API
- taverna-app-configuration-impl - Apache Taverna Application Configuration implementation
- taverna-configuration-api - Apache Taverna Configuration API
- taverna-configuration-impl - Apache Taverna Configuration implementation
- taverna-download-api - Apache Taverna Download API
- taverna-download-impl - Apache Taverna Download implementation
- taverna-maven-plugin - Apache Taverna Maven plugin for packaging and deploying Taverna plugins
- taverna-osgi-schemas - Apache Taverna Taverna's OSGi XML schemas and JAXB bindings
- taverna-plugin-api - Apache Taverna Plugin API
- taverna-plugin-impl - Apache Taverna Plugin implementation
- taverna-update-api - Apache Taverna Update API
- taverna-update-impl - Apache Taverna Update implementation
- taverna-osgi-launcher - Apache Taverna OSGi Framework Launcher
- xml-parser-service - Apache Taverna XML Parser Service for OSGi
- xml-transformer-service - Apache Taverna XML Transformer Service for OSGi
See the taverna-osgi javadoc for details on each OSGi service. In brief:
- The OsgiLauncher
starts the OSGi framework and installs the provided OSGi bundles. It is used by the
taverna-commandline-launcher
main()
method. - The PluginManager service from taverna-plugin-api allow managing of plugins in an OSGi application, including online installation and updates of plugins. Each Plugin provide a collection of OSGi bundles that are activated. The plugins and application profile are described in XML according to the taverna-osgi-schemas.
- The UpdateManager can update the installed plugins by downloading from the configured plugin site URI.
- The taverna-maven-plugin allows creating plugins for the Taverna
PluginManager
using Apache Maven, including deployment to plugin sites. - The DownloadManager
service from taverna-download-api provide convenience methods for downloading a
URI
to aPath
, including hashsum checking using neighbouring.sha1
or.md5
URIs. Used byPluginManager
andUpdateManager
. - The ApplicationConfiguration
service provide application installation details like the startup directory and home directory for user configuration. The application should have a conf/taverna.app.properties
file in its startup folder, e.g.
taverna.app.name=taverna-cl-3.0.0
means~/.taverna-cl-3.0.0/
will be the application's home directory on Unix. - The ConfigurationManager service from taverna-configuration-api can configure any Configurable like the HTTPProxyConfiguration and the workbench using preferences stored in the application home directory
- The xml-parser-service and xml-transformer-service re-exposes xalan's and xerces's XML parser and XML transformer implementations within SOGi