PluginDistribution

From Protege Wiki

Jump to: navigation, search

Tips for packaging your plug-in for distribution


In Protege versions 2.1 and higher, each plug-in resides in a separate, uniquely named subdirectory of the plugins directory and is loaded by a separate class loader. Prior to version 2.1, all plug-ins were placed at the same level in the plugins directory, which caused problems when plug-ins required incompatible versions of the same library. Thanks go to Ian Dickinson at HP Labs for originally suggesting the implementation technique for handling the "plug-in conflict" problem.


Below is a screen shot of the typical Protege directory structure:


Protege Plugins Directory.jpg


If you package your plug-in for distribution as a ZIP file, you need to have a "path" inside of the ZIP that corresponds to the directory name that you want your plug-in to use. Then, when a user unzips to the plugins directory, your JAR and other files will end up in the correct subdirectory.


It is essential that each plug-in be placed in a directory with a unique name. In order to ensure unique names, we suggest the scheme illustrated above of using a directory with an "inverted URL" that you "own" and a name for your plug-in. Typically, such a URL has been used as the package name for your plug-in.


Below is a screen shot of a Protege plug-in that has been packaged for distribution in ZIP format. Note the "Path" in the ZIP file, which allows a user to unzip the file to the correct subdirectory of the plugins directory.


Plugin ZIP Distribution.jpg


If your plugin depends on another plugin (e.g. your plugin depends on the protege-owl plugin), please read the Plugin Dependencies page.

Personal tools