blob: 5aa160b94468f74c336a739a90bd5f1b382e6a8f [file] [log] [blame] [view]
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# Taverna Command-line Tool
## Taverna Project Retired
> tl;dr: The Taverna code base is **no longer maintained**
> and is provided here for archival purposes.
From 2014 till 2020 this code base was maintained by the
[Apache Incubator](https://incubator.apache.org/) project _Apache Taverna (incubating)_
(see [web archive](https://web.archive.org/web/20200312133332/https://taverna.incubator.apache.org/)
and [podling status](https://incubator.apache.org/projects/taverna.html)).
In 2020 the Taverna community
[voted](https://lists.apache.org/thread.html/r559e0dd047103414fbf48a6ce1bac2e17e67504c546300f2751c067c%40%3Cdev.taverna.apache.org%3E)
to **retire** Taverna as a project and withdraw the code base from the Apache Software Foundation.
This code base remains available under the Apache License 2.0
(see _License_ below), but is now simply called
_Taverna_ rather than ~~Apache Taverna (incubating)~~.
While the code base is no longer actively maintained,
Pull Requests are welcome to the
[GitHub organization taverna](http://github.com/taverna/),
which may infrequently be considered by remaining
volunteer caretakers.
### Previous releases
Releases 2015-2018 during incubation at Apache Software Foundation
are available from the ASF Download Archive <https://archive.apache.org/dist/incubator/taverna/>
Releases 2014 from the University of Manchester are on BitBucket <https://bitbucket.org/taverna/>
Releases 2009-2013 from myGrid are on LaunchPad <https://launchpad.net/taverna/>
Releases 2003-2009 are on SourceForge <https://sourceforge.net/projects/taverna/files/taverna/>
Binary JARs for Taverna are available from
Maven Central <https://repo.maven.apache.org/maven2/org/apache/taverna/>
or the myGrid Maven repository <https://repository.mygrid.org.uk/>
## About Taverna Command-line Tool
Taverna Command-line Tool provides a shell command
for executing
[Taverna](https://web.archive.org/web/*/https://taverna.incubator.apache.org/) workflows,
defined using either the [Taverna Language](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/language/)
API in the
[SCUFL2](https://web.archive.org/web/*/https://taverna.incubator.apache.org/documentation/scufl2/)
`.wfbundle` format, or in the `.t2flow` format from
[Taverna Workbench 2.5](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/workbench/).
Workflow inputs can be provided as parameters or files,
while outputs can be saved either to a folder or a
[Research Object bundle](https://w3id.org/bundle)
including detailed provenance, which can be inspected
using Taverna Language's
[DataBundle](https://web.archive.org/web/*/https://taverna.incubator.apache.org/javadoc/taverna-language/org/apache/taverna/databundle/DataBundles.html)
support.
In addition to the
[Taverna Common Activities](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/common-activities/),
the Command-line supports plugins using
[Taverna OSGi services](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/osgi/).
Note that, except for command-line handling, this
module relies on other
[Taverna components](https://web.archive.org/web/*/https://taverna.incubator.apache.org/code) for the actual workflow execution.
## License
* (c) 2007-2014 University of Manchester
* (c) 2014-2020 Apache Software Foundation
This product includes software developed at The
[Apache Software Foundation](http://www.apache.org/).
Licensed under the
[Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0),
see the file [LICENSE](LICENSE) for details.
The file [NOTICE](NOTICE) contains any additional attributions and
details about embedded third-party libraries and source code.
# Contribute
<!--
Please subscribe to and contact the
[dev@taverna](http://taverna.incubator.apache.org/community/lists#dev) mailing list
mailing list for any questions, suggestions and discussions about
Taverna.
Bugs and planned features are tracked in the Jira
[issue tracker](https://issues.apache.org/jira/browse/TAVERNA/component/12326812)
under the `TAVERNA` component _Taverna Command-line Tool._ Feel free
to [add an issue](https://web.archive.org/web/*/https://taverna.incubator.apache.org/community/issue-tracker)!
To suggest changes to this source code, feel free to raise a
[GitHub pull request](https://github.com/apache/incubator-taverna-commandline/pulls).
-->
Taverna Command-line Tool product relies on
[other Taverna components](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/code/)
which have their own source code repositories.
Any contributions received are assumed to be covered by the
[Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0).
## Prerequisites
* Java 1.8 or newer (tested with OpenJDK 1.8)
* [Apache Maven](https://maven.apache.org/download.html) 3.2.5 or newer (older
versions probably also work)
This code relies on other
[Taverna modules](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/code/),
which Maven should download
automatically from
[Apache's Maven repository](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/maven/);
however you might want to compile these yourself in the order below:
* [taverna-language](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/language/)
* [taverna-osgi](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/osgi/)
* [taverna-engine](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/engine/)
* [taverna-common-activities](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/common-activities/)
Please see the `<properties>` of this [pom.xml](pom.xml) to find the
correct versions to build.
# Building
To build, use
mvn clean install
This will build each module and run its tests.
Note that this repository relies on
other [Taverna modules](https://web.archive.org/web/*/https://taverna.incubator.apache.org/code)
which will be downloaded from Maven repositories if they are not
already present in the equivalent of your `~/.m2/repository` in the
correct version.
## Building on Windows
If you are building on Windows, ensure you unpack this source code
to a folder with a [short path name](http://stackoverflow.com/questions/1880321/why-does-the-260-character-path-length-limit-exist-in-windows)
lenght, e.g. `C:\src` - as
Windows has a [limitation on the total path length](https://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#maxpath)
which might otherwise
prevent this code from building successfully.
## Skipping tests
To skip the tests (these can be time-consuming), use:
mvn clean install -DskipTests
If you are modifying this source code independent of the
Taverna project, you may not want to run the
[Rat Maven plugin](https://creadur.apache.org/rat/apache-rat-plugin/)
that enforces Apache headers in every source file - to disable it, try:
mvn clean install -Drat.skip=true
## SNAPSHOT dependencies
If you are building a non-released version of this repository,
(e.g. the `pom.xml` declares a `-SNAPSHOT` version), then Maven might
download unreleased
[snapshot builds](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/code/#snapshot-builds)
for other `-SNAPSHOT` Taverna dependencies.
If you are developing one of the
[Taverna modules](https://web.archive.org/web/*/http://taverna.incubator.apache.org/download/code)
and want to test it with the
Taverna Command-line Tool, make sure you build it
locally first with `mvn clean install` to avoid downloading it from
the snapshot repository.
Then check that the the `<properties>` section of the `pom.xml`
matches the `<version>` of the module you are developing.
See also `taverna-commandline-product/pom.xml`
to hard-code versions of other dependencies.
The default SNAPSHOT update policy for `mvn` is _daily_ -
you can modify this behaviour with
`--update-snapshots` or `--no-snapshot-updates`
## Binary distribution
To build a binary distribution ZIP file that
includes third-party dependencies as JAR files,
build with the `-Prelease` option, which would make
`taverna-commandline-product/target/apache-taverna-commandline-3.1.0-incubating-release.zip`
or equivalent.
After building, see the file `target/maven-shared-archive-resources/META-INF/DEPENDENCIES` for
details of the licenses of the third-party dependencies. All dependencies should
be [compatible with Apache License 2.0](http://www.apache.org/legal/resolved.html).
# Running
After [building](#building), see the `taverna-commandline-product/target`
directory. Inside you should find a folder like
`apache-taverna-commandline-3.1.0-incubating/`
which contains the built Taverna Command-line Tool product.
If you prefer a ZIP file, then instead build with
the Maven `-Prelease` option. You can then unzip at a location of
your choice.
If you are running on Windows you may need to
put Taverna Command-line Tool in a folder high in the
disk hierarchy (e.g. `C:\Taverna`), this helps
avoid problems with Windows path-length restrictions.
Running `executeworkflow.sh` (or `executeworkflow.bat`) without arguments
will show the help:
```
$ ./executeworkflow.sh
usage: executeworkflow [options] [workflow]
-bundle <bundle> Save outputs to a new Workflow
Run Bundle (zip).
-clientserver Connect as a client to a derby
server instance.
-cmdir <directory path> Absolute path to a directory
where Credential Manager's files
(keystore and truststore) are
located.
...
```
The folder `examples` contains a Hello World type example workflow in
[SCUFL2 format](http://taverna.incubator.apache.org/documentation/scufl2/).
```
$ ./executeworkflow.sh examples/helloworld.wfbundle
Outputs will be saved to the directory: /home/johndoe/apache-taverna-commandline-3.1.0/Hello_World_output
Workflow completed.
$ cat Hello_World_output/greeting ; echo
Hello, World!
```
On Windows:
```
C:\home\apache-taverna-commandline-3.1.0>executeworkflow.bat examples\helloworld.wfbundle
Outputs will be saved to the directory: C:\home\apache-taverna-commandline-3.1.0\Hello_World_output
Workflow completed.
C:\home\apache-taverna-commandline-3.1.0>type Hello_World_output\greeting
Hello, World!
```
# Export restrictions
This distribution includes cryptographic software.
The country in which you currently reside may have restrictions
on the import, possession, use, and/or re-export to another country,
of encryption software. BEFORE using any encryption software,
please check your country's laws, regulations and policies
concerning the import, possession, or use, and re-export of
encryption software, to see if this is permitted.
See <http://www.wassenaar.org/> for more information.
The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS),
has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1,
which includes information security software using or performing
cryptographic functions with asymmetric algorithms.
The form and manner of this Apache Software Foundation distribution makes
it eligible for export under the License Exception
ENC Technology Software Unrestricted (TSU) exception
(see the BIS Export Administration Regulations, Section 740.13)
for both object code and source code.
The following provides more details on the included cryptographic software:
* Taverna Command-line Tool depends on and interacts with the
[Taverna Engine](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/engine/),
credential manager.
* After building, the [taverna-commandline-product](taverna-commandline-product)
archive `lib` folder includes
[BouncyCastle](https://www.bouncycastle.org/) bcprov encryption library,
[Apache HttpComponents](https://hc.apache.org/) Core and Client,
[Apache Derby](http://db.apache.org/derby/),
[Jetty](http://www.eclipse.org/jetty/),
[Apache WSS4J](https://ws.apache.org/wss4j/),
[Apache XML Security for Java](https://santuario.apache.org/javaindex.html),
[Open SAML Java](https://shibboleth.net/products/opensaml-java.html),
[Taverna Language](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/language/),
[Taverna OSGi](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/osgi/),
[Taverna Engine](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/engine/),
and
[Taverna Common Activities](https://web.archive.org/web/*/https://taverna.incubator.apache.org/download/common-activities/).