<?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 -->
  <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>
