<?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.0-incubating-SNAPSHOT</version>
  </parent>
  <artifactId>taverna-commandline-product</artifactId>
  <name>Apache Taverna Commandline Product</name>
  <!--<packaging>taverna-application</packaging> Disabled due to TAVERNA-924 -->
  <packaging>jar</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>
  </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}</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-->
    <dependency>
      <groupId>javax.activation</groupId>
      <artifactId>com.springsource.javax.activation</artifactId>
      <version>${activation.version}</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>1.10</version>
  </dependency>
  <dependency>
      <groupId>com.sun.xml.bind</groupId>
      <artifactId>jaxb-impl</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>
    <!-- Appears unrequired 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 Commandline -->
    <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>
    <!-- HTTP client needed by Data Bundle -->
    <!-- Appears unrequired dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient-osgi</artifactId>
      <version>4.2.5</version>
    </dependency-->
    <!-- Appears unrequired dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpcore-osgi</artifactId>
      <version>4.2.5</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 as jena-osgi depends on outdated 0.5.0 -->
    <dependency>
      <groupId>com.github.jsonld-java</groupId>
      <artifactId>jsonld-java</artifactId>
      <version>0.7.0</version>
      <!-- However don't require too new jackson -->
    </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>

    <!-- Appears unrequired: -->
    <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)"-->
    <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>
