<?xml version="1.0" encoding="UTF-8"?>
<!--

    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.

-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache.taverna.commandline</groupId>
    <artifactId>apache-taverna-commandline</artifactId>
    <version>3.1.1-incubating-SNAPSHOT</version>
  </parent>
  <artifactId>taverna-commandline-product</artifactId>
  <name>Apache Taverna Command-line Tool Product</name>
  <!--<packaging>taverna-application</packaging> Disabled due to TAVERNA-924 -->
  <packaging>bundle</packaging>
  <profiles>
    <profile>
      <id>developer</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
              <attach>false</attach>
              <appendAssemblyId>false</appendAssemblyId>
            </configuration>
          </plugin>
        </plugins>
      </build>

      <properties>
        <assembly.descriptor>src/main/assembly/developer-assembly.xml</assembly.descriptor>
        <!-- See http://updates.taverna.org.uk/ -->
        <profile.updateSite>https://taverna.incubator.apache.org/updates/commandline/</profile.updateSite>
        <profile.pluginSite>https://taverna.incubator.apache.org/plugins/commandline/</profile.pluginSite>
      </properties>
    </profile>
    <profile>
      <id>nightly</id>
      <properties>
        <assembly.descriptor>src/main/assembly/nightly-assembly.xml</assembly.descriptor>
        <profile.updateSite>https://taverna.incubator.apache.org/updates/commandline/</profile.updateSite>
        <profile.pluginSite>https://taverna.incubator.apache.org/plugins/commandline/</profile.pluginSite>
      </properties>
    </profile>
    <profile>
      <id>release</id>
      <properties>
        <assembly.descriptor>src/main/assembly/release-assembly.xml</assembly.descriptor>
        <profile.updateSite>https://taverna.incubator.apache.org/updates/commandline/</profile.updateSite>
        <profile.pluginSite>https://taverna.incubator.apache.org/plugins/commandline/</profile.pluginSite>
      </properties>
    </profile>
    <profile>
      <id>apache-release</id>
      <properties>
        <assembly.descriptor>src/main/assembly/release-assembly.xml</assembly.descriptor>
        <profile.updateSite>https://taverna.incubator.apache.org/updates/commandline/</profile.updateSite>
        <profile.pluginSite>https://taverna.incubator.apache.org/plugins/commandline/</profile.pluginSite>
      </properties>
    </profile>
  </profiles>
  <build>
    <finalName>apache-taverna-commandline-${project.version}</finalName>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <descriptors>
            <descriptor>${assembly.descriptor}</descriptor>
          </descriptors>
          <archiverConfig>
            <directoryMode>493</directoryMode> <!-- 493(dec) = 755(oct) -->
            <defaultDirectoryMode>493</defaultDirectoryMode>
          </archiverConfig>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <version>1.0-beta-3</version>
        <executions>
          <execution>
            <id>buildnumber-validate</id>
            <phase>validate</phase>
            <goals>
              <goal>create</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <format>{0,date,yyyyMMdd}T{0,date,HHmm}</format>
          <items>
            <item>timestamp</item>
          </items>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.taverna.osgi</groupId>
        <artifactId>taverna-maven-plugin</artifactId>
        <version>${taverna.osgi.version}</version>
        <extensions>true</extensions>
        <configuration>
          <buildNumber>${buildNumber}</buildNumber>
          <updateSite>${profile.updateSite}</updateSite>
          <pluginSite>${profile.pluginSite}</pluginSite>
          <frameworkConfigurations>
            <frameworkConfiguration>
              <name>org.osgi.framework.bootdelegation</name>
              <value>sun.*,com.sun.*,java.*,javax.*,org.xml.*,org.w3c.*,apple.*,com.apple.*,org.omg.*,org.ietf.jgss.*,org.jcp.xml.dsig.internal.*</value>
            </frameworkConfiguration>
            <frameworkConfiguration>
              <name>org.osgi.framework.system.packages.extra</name>
              <value>com.sun.org.apache.xml.internal.utils,com.sun.source.util,com.sun.source.tree,org.apache.log4j;version=${log4j.version},org.apache.taverna.commandline.options;version=${taverna.commandline.osgiversion},org.apache.commons.cli;version=${commons.cli.version},javax.activation;version=${javax.transaction.version},javax.xml.soap=1.6.0</value>
            </frameworkConfiguration>
            <frameworkConfiguration>
              <name>org.osgi.framework.storage.clean</name>
              <value>onFirstInit</value>
            </frameworkConfiguration>
          </frameworkConfigurations>
        </configuration>
	<executions>
	  <execution>
            <!-- Explicit execution due to TAVERNA-924 workaround -->
            <id>prepare-bundles</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>profile-generate</goal>
            </goals>
	  </execution>
	</executions>
      </plugin>
    </plugins>
  </build>

  <dependencies>

    <!-- Explicit org.osgi.* with <scope>provided as these are also provided
      by the felix osgi package. Avoids: Caused by: java.lang.SecurityException:
      class "org.osgi.framework.hooks.bundle.CollisionHook"'s signer information
      does not match signer information of other classes in the same package -->

    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.core</artifactId>
      <version>${osgi.core.version}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.compendium</artifactId>
      <version>${osgi.core.version}</version>
      <scope>provided</scope>
    </dependency>

                <!-- Invalid manifest header Import-Package: "com.sun.jdmk.comm;resolution:="optional"" : Cannot import a package more than once "com.sun.jdmk.comm"-->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${log4j.version}</version>
      <!-- <scope>provided</scope> -->
    </dependency>

    <!-- Spring DM -->
    <dependency>
      <groupId>net.sourceforge.cglib</groupId>
      <artifactId>com.springsource.net.sf.cglib</artifactId>
      <version>${cglib.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.osgi</groupId>
      <artifactId>spring-osgi-annotation</artifactId>
      <version>${spring.dm.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.osgi</groupId>
      <artifactId>spring-osgi-extender</artifactId>
      <version>${spring.dm.version}</version>
    </dependency>
    <!-- Spring -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>org.springframework.context</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!-- Java Extension Implementations -->
    <!-- Appears unrequired dependency>
      <groupId>javax.xml.bind</groupId>
      <artifactId>com.springsource.javax.xml.bind</artifactId>
      <version>2.2.0</version>
    </dependency-->
                <!-- The bundle "com.springsource.bsh_2.0.0.b4 " could not be resolved. Reason: Missing Constraint: Import-Package: javax.servlet; version="[2.5.0,3.0.0)" -->
    <dependency>
       <groupId>javax.servlet</groupId>
      <artifactId>com.springsource.javax.servlet</artifactId>
      <version>2.5.0</version>
    </dependency>
                <!-- The bundle "com.springsource.org.apache.axis_1.4.0 " could not be resolved. Reason: Missing Constraint: Import-Package: javax.jms; version="[1.1.0,2.0.0)" -->
    <dependency>
      <groupId>javax.jms</groupId>
      <artifactId>com.springsource.javax.jms</artifactId>
      <version>1.1.0</version>
    </dependency>
                <!-- The bundle "com.springsource.javax.xml.rpc_1.1.0 " could not be resolved. Reason: Missing Constraint: Import-Package: javax.xml.soap; version="[1.3.0,2.0.0)" -->
    <dependency>
      <groupId>javax.xml.soap</groupId>
      <artifactId>com.springsource.javax.xml.soap</artifactId>
      <version>1.3.0</version>
    </dependency>
                <!-- The bundle "com.springsource.com.thoughtworks.xstream_1.4.1" could not be resolved. Reason: Missing Constraint: Import-Package: javax.xml.stream; version="[1.0.1,2.0.0)" -->
    <dependency>
      <groupId>javax.xml.stream</groupId>
      <artifactId>com.springsource.javax.xml.stream</artifactId>
      <version>1.0.1</version>
    </dependency>
    <dependency>
      <groupId>javax.mail</groupId>
      <artifactId>com.springsource.javax.mail</artifactId>
      <version>${mail.version}</version>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
      <version>${commons.codec.version}</version>
    </dependency>
  <dependency>
    <groupId>commons-configuration</groupId>
    <artifactId>commons-configuration</artifactId>
    <version>${commons.configuration.version}</version>
  </dependency>
  <dependency>
      <groupId>com.sun.xml.bind</groupId>
      <artifactId>jaxb-osgi</artifactId>
      <version>2.2.11</version>
  </dependency>


    <!-- OSGi Enterprise Services -->
    <dependency>
      <groupId>org.apache.taverna.osgi</groupId>
      <artifactId>xml-parser-service</artifactId>
      <version>${taverna.osgi.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.osgi</groupId>
      <artifactId>xml-transformer-service</artifactId>
      <version>${taverna.osgi.version}</version>
    </dependency>
                <!-- The bundle "uk.org.taverna.commons.taverna-plugin-impl_0.1.0.SNAPSHOT" could not be resolved. Reason: Missing Constraint: Import-Package: org.osgi.service.event; version="[1.3.0,2.0.0)" -->
    <dependency>
      <groupId>org.apache.felix</groupId>
      <artifactId>org.apache.felix.eventadmin</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.felix</groupId>
      <artifactId>org.apache.felix.configadmin</artifactId>
      <version>1.6.0</version>
    </dependency>

    <!-- Taverna Activities -->
    <dependency>
      <groupId>org.apache.taverna.engine</groupId>
      <artifactId>taverna-dataflow-activity</artifactId>
      <version>${taverna.engine.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.engine</groupId>
      <artifactId>taverna-stringconstant-activity</artifactId>
      <version>${taverna.engine.version}</version>
    </dependency>

    <!-- Taverna Common Activities -->
    <dependency>
      <groupId>org.apache.taverna.commonactivities</groupId>
      <artifactId>taverna-beanshell-activity</artifactId>
      <version>${taverna.commonactivities.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.commonactivities</groupId>
      <artifactId>taverna-external-tool-activity</artifactId>
      <version>${taverna.commonactivities.version}</version>
    </dependency>
    <!-- VERY broken :(
    <dependency>
      <groupId>org.apache.taverna.commonactivities</groupId>
      <artifactId>taverna-interaction-activity</artifactId>
      <version>${taverna.commonactivities.version}</version>
    </dependency>
    -->
    <dependency>
      <groupId>org.apache.taverna.commonactivities</groupId>
      <artifactId>taverna-rest-activity</artifactId>
      <version>${taverna.commonactivities.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.commonactivities</groupId>
      <artifactId>taverna-spreadsheet-import-activity</artifactId>
      <version>${taverna.commonactivities.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.commonactivities</groupId>
      <artifactId>taverna-wsdl-activity</artifactId>
      <version>${taverna.commonactivities.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.commonactivities</groupId>
      <artifactId>taverna-xpath-activity</artifactId>
      <version>${taverna.commonactivities.version}</version>
    </dependency>


    <!-- Taverna Command-line Tool -->
    <dependency>
      <groupId>${project.parent.groupId}</groupId>
      <artifactId>taverna-commandline-common</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>${project.parent.groupId}</groupId>
      <artifactId>taverna-commandline-launcher</artifactId>
      <version>${project.parent.version}</version>
    </dependency>

    <!-- Taverna Platform -->
    <dependency>
      <groupId>org.apache.taverna.engine</groupId>
      <artifactId>taverna-capability-impl</artifactId>
      <version>${taverna.engine.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.engine</groupId>
      <artifactId>taverna-run-impl</artifactId>
      <version>${taverna.engine.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.engine</groupId>
      <artifactId>taverna-execution-impl</artifactId>
      <version>${taverna.engine.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.engine</groupId>
      <artifactId>taverna-execution-local</artifactId>
      <version>${taverna.engine.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.engine</groupId>
      <artifactId>taverna-database-configuration-impl</artifactId>
      <version>${taverna.engine.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.taverna.engine</groupId>
      <artifactId>taverna-services-impl</artifactId>
      <version>${taverna.engine.version}</version>
    </dependency>

    <!-- Taverna OSGi -->
    <dependency>
      <groupId>org.apache.taverna.osgi</groupId>
      <artifactId>taverna-configuration-impl</artifactId>
      <version>${taverna.osgi.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.osgi</groupId>
      <artifactId>taverna-app-configuration-impl</artifactId>
      <version>${taverna.osgi.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.osgi</groupId>
      <artifactId>taverna-download-impl</artifactId>
      <version>${taverna.osgi.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.osgi</groupId>
      <artifactId>taverna-plugin-impl</artifactId>
      <version>${taverna.osgi.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.osgi</groupId>
      <artifactId>taverna-update-impl</artifactId>
      <version>${taverna.osgi.version}</version>
    </dependency>

    <!-- Scufl2 -->
    <dependency>
      <groupId>org.apache.taverna.language</groupId>
      <artifactId>taverna-scufl2-wfbundle</artifactId>
      <version>${taverna.language.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.language</groupId>
      <artifactId>taverna-scufl2-t2flow</artifactId>
      <version>${taverna.language.version}</version>
    </dependency>
    <!-- Data bundle -->
    <dependency>
      <groupId>org.apache.taverna.language</groupId>
      <artifactId>taverna-databundle</artifactId>
      <version>${taverna.language.version}</version>
    </dependency>

    <!-- Latest httpcomponents.
These needs to be in sync - however their version numbers differ -->
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient-osgi</artifactId>
      <version>${apache.httpclient.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpcore-osgi</artifactId>
      <version>${apache.httpcore.version}</version>
    </dependency>

    <!-- Jena bundle needed by jsonld-java-jena -->
    <dependency>
      <groupId>org.apache.jena</groupId>
      <artifactId>jena-osgi</artifactId>
      <version>${jena.version}</version>
    </dependency>
    <!-- Newer jsonld-java than jena-osgi requires (JENA-1176) -->
    <dependency>
      <groupId>com.github.jsonld-java</groupId>
      <artifactId>jsonld-java</artifactId>
      <version>${jsonldjava.version}</version>
      <!-- NOTE: This will also require a newer Jackson and httpcore/httpclient -->
     </dependency>

<!--
Xerces OSGi bundle needed by jena-osgi
-->
    <dependency>
      <groupId>org.apache.servicemix.bundles</groupId>
      <artifactId>org.apache.servicemix.bundles.xerces</artifactId>
      <version>${servicemix.xerces.version}</version>
    </dependency>
<!-- Also needed by Jena -->
    <dependency>
      <groupId>com.github.andrewoma.dexx</groupId>
      <artifactId>collection</artifactId>
      <version>${dexx.collection.version}</version>
    </dependency>



    <!-- slf4j implementation -->
                <!-- The bundle "org.purl.wf4ever.robundle_0.3.1 " could not be resolved. Reason: Missing Constraint: Import-Package: org.slf4j; version="[1.7.0,2.0.0)"-->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>

    <!-- Connect slf4j to log4j -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${slf4j.version}</version>
    </dependency>

    <!-- Taverna Security -->
    <dependency>
      <groupId>org.apache.taverna.engine</groupId>
      <artifactId>taverna-credential-manager-impl</artifactId>
      <version>${taverna.engine.version}</version>
    </dependency>

    <!-- Taverna Workflow Engine -->
    <dependency>
      <groupId>org.apache.taverna.engine</groupId>
      <artifactId>taverna-workflowmodel-impl</artifactId>
      <version>${taverna.engine.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.engine</groupId>
      <artifactId>taverna-workflowmodel-extensions</artifactId>
      <version>${taverna.engine.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.engine</groupId>
      <artifactId>taverna-reference-impl</artifactId>
      <version>${taverna.engine.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.engine</groupId>
      <artifactId>taverna-reference-types</artifactId>
      <version>${taverna.engine.version}</version>
    </dependency>

    <!-- Taverna Provenance -->
    <!--dependency>
      <groupId>org.apache.taverna.engine</groupId>
      <artifactId>provenance-derby</artifactId>
      <version>${taverna.engine.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.taverna.engine</groupId>
      <artifactId>provenance-mysql</artifactId>
      <version>${taverna.engine.version}</version>
    </dependency-->
                <!-- The bundle "org.purl.wf4ever.robundle_0.3.1 " could not be resolved. Reason: Missing Constraint: Import-Package: com.fasterxml.jackson.annotation; version="[2.3.0,3.0.0)"-->

<!-- These should be kept in sync -->
    <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>${jackson.version}</version>
    </dependency>
    <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>${jackson.version}</version>
    </dependency>
    <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
    </dependency>

    <dependency>
      <groupId>nu.validator.htmlparser</groupId>
      <artifactId>htmlparser</artifactId>
      <version>${htmlparser.version}</version>
    </dependency>

  </dependencies>


</project>
