On Wed, May 19, 2010 at 10:04, Andreas Truszkowski <[email protected]> wrote:

> I want to get rid of the maven repository in my Taverna 2.1.2 plugin. Is
> there any documentation of which folders and files are needed to
> maintain a proper structure of the plugin so that it also works with
> taverna?

I'm not quite sure what you mean.. do you mean how you can deploy your
plugin so that it is world-wide installable to a fresh Taverna, or how
you can make a specialized distribution of Taverna including your
plugin?

To deploy your plugin you'll need to have a web-space available
somewhere. Assuming this is locally on your machine on
/home/stain/public_html/ make a sub-folder for the maven repository,
call it "maven". Then you'll need to modify your POM to include a
<distributionManagement> section. This is Taverna's section:

<distributionManagement>
                <repository>
                        <id>mygrid-repository</id>
                        <name>myGrid Repository</name>
                        <!--  on rosalind.cs.man.ac.uk (www.mygrid.org.uk) -->
                        <url>file:///local/www/mygrid/maven/repository</url>
                </repository>
                <snapshotRepository>
                        <id>mygrid-snapshot-repository</id>
                        <name>myGrid Snapshot Repository</name>
                        <!--  on rosalind.cs.man.ac.uk (www.mygrid.org.uk) -->
                        
<url>file:///local/www/mygrid/maven/snapshot-repository</url>
                </snapshotRepository>
        </distributionManagement>

You can also use scp://machinename/remote/path or
sftp://machinename/remote/path to use scp or sftp.

You should then also have also correctly specified your <scm> section
of your Subversion/git/CVS details, for example:

<scm>
                
<connection>scm:svn:http://taverna.googlecode.com/svn/taverna/engine/net.sf.taverna.t2.core/trunk/</connection>
                
<developerConnection>scm:svn:https://taverna.googlecode.com/svn/taverna/engine/net.sf.taverna.t2.core/trunk/</developerConnection>
                
<url>http://code.google.com/p/taverna/source/browse/#svn/taverna/engine/net.sf.taverna.t2.core/trunk</url>
        </scm>


You should then be able to run mvn release:prepare [1] to set what
your released version number is to be (they should not be ending in
-SNAPSHOT, as that is a moving target), and then finally mvn
release:perform, which will do the tagging and run mvn deploy for you,
which should deploy you POMs and JARs to the specified
distributionManagement location.


You would then be able to update your Taverna plugin file to include
that Maven repository. See for example
http://www.mygrid.org.uk/taverna/updates/2.1.2/plugins/prototype/sadi-plugin-0.2.0.xml
which includes:

<repositories>
  <repository>http://dev.biordf.net/maven</repository>
 ..
</repositories>

Put your plugin file, for instance myplugin-0.1.xml in a "plugins"
folder on your web server, probably sister folder to the "maven"
folder you made before. Then make a file in the same folder called
pluginlist.xml, and inside add a reference to the plugin file you just
made:

<plugins>
        <plugin>myplugin-0.1.xml</plugin>
</plugins>


Now you should be able to add http://mywebserver/plugins/ as a
plugin-site in a blank installation of Taverna. Remember the the
trailing / - as Taverna will add "pluginlist.xml" to the URL to look
for the available plugins.  If no available plugins appear,
double-check that your plugin specifies:

<compatibility>
  <application>
     <version>2.1.2</version>
  </application>
</compatibility>


If you later want to release an update to the plugin, repeat the
procedure, but use a new version number of the Maven artifact. Copy
and modify the plugin file, update both the <dependency> section to
refer to your new version, and the top level <version>. Taverna will
automatically pick the latest plugin version if starting from scratch,
or if a previous plugin is installed, it will detect the update and
give the user a notification on start-up.

It is very important that you use new plugin and maven artifact
versions, otherwise users who installed your older version of the
plugin will be left in the dark. Taverna will only download Maven
artifacts it can't find in it's "repository" folders (in the
distribution and the Taverna home directory), so without a new version
number Taverna would use the JAR previously downloaded.

(While developing locally this should not be a problem, as your plugin
file will include file:///Users/myuser/.m2/repository - and mvn
install will overwrite the JAR in .m2/repository)


You might find that your plugin have used third-party JARs which are
not included in the official Maven repositories. If they are available
from other Maven repositories, include those as <repository>
statements. Alternatively you can use mvn deploy-file [2]  to deploy
them to the same Maven repository as your plugin.


[1] http://maven.apache.org/plugins/maven-release-plugin/
[2] http://maven.apache.org/plugins/maven-deploy-plugin/usage.html


As for making a bundled-Taverna with your plugin pre-installed, you
can then simply copy the plugins.xml and plugin_sites.xml from your
Taverna home directory "plugins" folder to the matching "plugins"
folder in the Taverna installation, in addition to copying all the
content of your home directory "repository".


> P.S.: Is it conceivable when the deployment tutorial is done?

I'm afraid that will have to delayed till we have released Taverna
2.2, which is scheduled for first week of June.

-- 
Stian Soiland-Reyes, myGrid team
School of Computer Science
The University of Manchester

------------------------------------------------------------------------------

_______________________________________________
taverna-hackers mailing list
[email protected]
Web site: http://www.taverna.org.uk
Mailing lists: http://www.taverna.org.uk/about/contact-us/
Developers Guide: http://www.taverna.org.uk/developers/

Reply via email to