<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.biouml.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.biouml.org/index.php?action=history&amp;feed=atom&amp;title=Plugin_development</id>
		<title>Plugin development - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.biouml.org/index.php?action=history&amp;feed=atom&amp;title=Plugin_development"/>
		<link rel="alternate" type="text/html" href="https://wiki.biouml.org/index.php?title=Plugin_development&amp;action=history"/>
		<updated>2026-04-13T00:07:41Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.20.3</generator>

	<entry>
		<id>https://wiki.biouml.org/index.php?title=Plugin_development&amp;diff=5153&amp;oldid=prev</id>
		<title>Lan@dote.ru: Created page with &quot;This page describes steps necessary to create your own BioUML or BDK plugin. Suppose you want to create plugin named &lt;code&gt;biouml.plugins.myplugin&lt;/code&gt;. All paths ar...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.biouml.org/index.php?title=Plugin_development&amp;diff=5153&amp;oldid=prev"/>
				<updated>2013-09-10T04:35:18Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;This page describes steps necessary to create your own &lt;a href=&quot;/index.php/BioUML&quot; title=&quot;BioUML&quot;&gt;BioUML&lt;/a&gt; or &lt;a href=&quot;/index.php/BDK&quot; class=&quot;mw-redirect&quot; title=&quot;BDK&quot;&gt;BDK&lt;/a&gt; plugin. Suppose you want to create plugin named &amp;lt;code&amp;gt;biouml.plugins.myplugin&amp;lt;/code&amp;gt;. All paths ar...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This page describes steps necessary to create your own [[BioUML]] or [[BDK]] plugin. Suppose you want to create plugin named &amp;lt;code&amp;gt;biouml.plugins.myplugin&amp;lt;/code&amp;gt;. All paths are relative to BioUML/BDK root directory.&lt;br /&gt;
&lt;br /&gt;
== Code and compilation ==&lt;br /&gt;
* Create package folder &amp;lt;code&amp;gt;src/biouml/plugins/myplugin&amp;lt;/code&amp;gt; and put your Java code there. If necessary, create subpackages folders like &amp;lt;code&amp;gt;src/biouml/plugins/myplugin/access&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Create plugin folder &amp;lt;code&amp;gt;plugins/biouml.plugins.myplugin_1.0.0&amp;lt;/code&amp;gt; (replace 1.0.0 with your plugin version).&lt;br /&gt;
* Add ant target to &amp;lt;code&amp;gt;src/build.xml&amp;lt;/code&amp;gt; to build your plugin. It may look like this:&lt;br /&gt;
 &amp;lt;target name=&amp;quot;plugin.myplugin&amp;quot; depends=&amp;quot;compile&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;echo message=&amp;quot;Making biouml.plugins.myplugin_1.0.0/myplugin.jar&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;jar jarfile=&amp;quot;${PLUGIN_DIR}/biouml.plugins.myplugin_1.0.0/myplugin.jar&amp;quot; compress=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;fileset dir=&amp;quot;${OUTDIR}&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;patternset&amp;gt;&lt;br /&gt;
         &amp;lt;include name=&amp;quot;biouml/plugins/myplugin/**/*.class&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;exclude name=&amp;quot;biouml/plugins/myplugin/**/_test/**/*.class&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;/patternset&amp;gt;&lt;br /&gt;
     &amp;lt;/fileset&amp;gt;&lt;br /&gt;
     &amp;lt;fileset dir=&amp;quot;${SRCDIR}&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;patternset&amp;gt;&lt;br /&gt;
         &amp;lt;include name=&amp;quot;biouml/plugins/myplugin/**/*.gif&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;include name=&amp;quot;biouml/plugins/myplugin/**/*.html&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;/patternset&amp;gt;&lt;br /&gt;
     &amp;lt;/fileset&amp;gt;&lt;br /&gt;
   &amp;lt;/jar&amp;gt;&lt;br /&gt;
 &amp;lt;/target&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;${SRCDIR}&amp;lt;/code&amp;gt; fileset is used to copy all the necessary resource files. Add other file types there if you use them.&lt;br /&gt;
&lt;br /&gt;
After these steps your plugin jar file &amp;lt;code&amp;gt;myplugin.jar&amp;lt;/code&amp;gt; can be built using &amp;lt;code&amp;gt;ant plugin.myplugin&amp;lt;/code&amp;gt; command. For convenience you may add the dependence to &amp;lt;code&amp;gt;plugin.all&amp;lt;/code&amp;gt; target.&lt;br /&gt;
&lt;br /&gt;
== MANIFEST.MF file ==&lt;br /&gt;
Every plugin must have its MANIFEST.MF file. Create folder &amp;lt;code&amp;gt;plugins/biouml.plugins.myplugin_1.0.0/META-INF&amp;lt;/code&amp;gt;, then create text file &amp;lt;code&amp;gt;MANIFEST.MF&amp;lt;/code&amp;gt; in this folder and fill it in the following manner:&lt;br /&gt;
&lt;br /&gt;
 Manifest-Version: 1.0&lt;br /&gt;
 Bundle-ManifestVersion: 2&lt;br /&gt;
 Bundle-Localization: plugin&lt;br /&gt;
 Bundle-Name: My plugin&lt;br /&gt;
 Bundle-SymbolicName: biouml.plugins.myplugin;singleton:=true&lt;br /&gt;
 Bundle-Version: 1.0.0&lt;br /&gt;
 Bundle-Vendor: Provider Name&lt;br /&gt;
 Require-Bundle: biouml.workbench,&lt;br /&gt;
  ru.biosoft.access,&lt;br /&gt;
  ru.biosoft.analysis,&lt;br /&gt;
  ru.biosoft.table&lt;br /&gt;
 Bundle-ClassPath: myplugin.jar&lt;br /&gt;
 Export-Package: biouml.plugins.myplugin,&lt;br /&gt;
  biouml.plugins.myplugin.access&lt;br /&gt;
Let's discuss this file in detail:&lt;br /&gt;
 Manifest-Version: 1.0&lt;br /&gt;
 Bundle-ManifestVersion: 2&lt;br /&gt;
 Bundle-Localization: plugin&lt;br /&gt;
These rows should always look like this, just copy them.&lt;br /&gt;
 Bundle-Name: My plugin&lt;br /&gt;
Here user-friendly plugin name &amp;quot;My plugin&amp;quot; is displayed. It's rarely used in BioUML, but it's good to specify something relevant. If wiki page will be generated for your plugin, this name will be displayed on it.&lt;br /&gt;
 Bundle-SymbolicName: biouml.plugins.myplugin;singleton:=true&lt;br /&gt;
Symbolic name &amp;lt;code&amp;gt;biouml.plugins.myplugin&amp;lt;/code&amp;gt; must be exactly the same as your root Java package and plugin folder name (except version part).&lt;br /&gt;
 Bundle-Version: 1.0.0&lt;br /&gt;
Version must be exactly the same as in plugin folder.&lt;br /&gt;
 Bundle-Vendor: Provider Name&lt;br /&gt;
User-friendly plugin provider name. It's used for wiki pages generation.&lt;br /&gt;
 Require-Bundle: biouml.workbench,&lt;br /&gt;
  ru.biosoft.access,&lt;br /&gt;
  ru.biosoft.analysis,&lt;br /&gt;
  ru.biosoft.table&lt;br /&gt;
Here all other plugins which your plugin directly depends on must be listed. For example, if you're using &amp;lt;code&amp;gt;ru.biosoft.bsa.Site&amp;lt;/code&amp;gt; class somewhere in your plugin, then you must list &amp;lt;code&amp;gt;[[Ru.biosoft.bsa (plugin)|ru.biosoft.bsa]]&amp;lt;/code&amp;gt; plugin here.&lt;br /&gt;
 Bundle-ClassPath: myplugin.jar&lt;br /&gt;
Here exact name of the jar file which will be created during plugin build procedure must be specified.&lt;br /&gt;
 Export-Package: biouml.plugins.myplugin,&lt;br /&gt;
  biouml.plugins.myplugin.access&lt;br /&gt;
Here you must specify all packages from your plugin which should be accessible from the outside.&lt;br /&gt;
&lt;br /&gt;
== plugin.xml file ==&lt;br /&gt;
If you want to define new extensions or extension points in your plugin, you should create &amp;lt;code&amp;gt;plugins/biouml.plugins.myplugin_1.0.0/plugin.xml&amp;lt;/code&amp;gt; file and fill it like this:&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;plugin&amp;gt;&lt;br /&gt;
   &amp;lt;extension-point name=&amp;quot;myExtensionPoint&amp;quot;  id=&amp;quot;myExtensionPoint&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;extension point=&amp;quot;biouml.plugins.myplugin.myExtensionPoint&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;!-- extension definition goes here --&amp;gt;&lt;br /&gt;
   &amp;lt;/extension&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;extension point=&amp;quot;ru.biosoft.analysis.method&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;!-- extension definition goes here --&amp;gt;&lt;br /&gt;
   &amp;lt;/extension&amp;gt;&lt;br /&gt;
 &amp;lt;/plugin&amp;gt;&lt;br /&gt;
If you want to create an extension for existing extension point, please refer to the corresponding [[:Category:Extension points|extension point documentation page]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Lan@dote.ru</name></author>	</entry>

	</feed>