<?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.uima</groupId>
    <artifactId>uima-ducc-parent</artifactId>
    <version>1.0.0</version>
    <relativePath>../uima-ducc-parent/pom.xml</relativePath>
  </parent>

  <!-- Inherits groupid and version from the parent pom project coordinates -->
  <!-- Uses default packaging ie. jar                                       -->
  <artifactId>uima-ducc-cli</artifactId>
  <name>${uima.ducc} ${project.artifactId}</name>
 <!-- Special inheritance note even though the <scm> element that follows 
        is exactly the same as those in super poms, it cannot be inherited because 
        there is some special code that computes the connection elements from the 
        chain of parent poms, if this is omitted. Keeping this a bit factored allows 
        cutting/pasting the <scm> element, and just changing the following two properties -->
  <scm>
    <connection>
      scm:svn:http://svn.apache.org/repos/asf/uima/sandbox/uima-ducc/tags/uima-ducc-1.0.0/uima-ducc-cli
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/uima/sandbox/uima-ducc/tags/uima-ducc-1.0.0/uima-ducc-cli
    </developerConnection>
    <url>
      http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/tags/uima-ducc-1.0.0/uima-ducc-cli
    </url>
  </scm>

  <properties>
    <DUCC_CP>
uima-ducc-common-${ducc.version}.jar uima-ducc-transport-${ducc.version}.jar ../../resources/ ../slf4j/jcl-over-slf4j-1.5.11.jar ../slf4j/slf4j-api-1.5.11.jar ../slf4j/slf4j-log4j12-1.5.11.jar ../xstream/xstream.jar ../http-client/commons-codec-${commons.codec.version}.jar ../http-client/commons-httpclient-${commons.httpclient.version}.jar ../google-gson/gson-${google.gson.version}.jar ../apache-log4j/log4j-${log4j.version}.jar ../apache-commons-cli/commons-cli-${commons.cli.version}.jar ../uima/uima-core.jar ../uima/uimaj-as-core.jar
    </DUCC_CP>
    <DUCC_CP2>
uima-ducc/uima-ducc-cli-${ducc.version}.jar uima-ducc/uima-ducc-common-${ducc.version}.jar uima-ducc/uima-ducc-transport-${ducc.version}.jar ../resources/ slf4j/jcl-over-slf4j-1.5.11.jar slf4j/slf4j-api-1.5.11.jar slf4j/slf4j-log4j12-1.5.11.jar xstream/xstream.jar http-client/commons-codec-${commons.codec.version}.jar http-client/commons-httpclient-${commons.httpclient.version}.jar google-gson/gson-${google.gson.version}.jar apache-log4j/log4j-${log4j.version}.jar apache-commons-cli/commons-cli-${commons.cli.version}.jar uima/uima-core.jar uima/uimaj-as-core.jar
    </DUCC_CP2>
  </properties>

  <dependencies>

    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uima-ducc-common</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uima-ducc-transport</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-core</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-as-core</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uimaj-as-activemq</artifactId>
	  <exclusions>
		<exclusion>
		  <groupId>org.eclipse.jetty</groupId>
		  <artifactId>jetty-webapp</artifactId>
		</exclusion>
		<exclusion>
		  <groupId>net.sf.josql</groupId>
		  <artifactId>josql</artifactId>
		</exclusion>
		<exclusion>
		  <groupId>net.sf.josql</groupId>
		  <artifactId>gentlyweb-utils</artifactId>
		</exclusion>
	  </exclusions>
    </dependency>

    <dependency>
      <groupId>org.apache.activemq</groupId>
	  <artifactId>activemq-core</artifactId>
	</dependency>

    <dependency>
      <groupId>commons-cli</groupId>
      <artifactId>commons-cli</artifactId>
    </dependency>

    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>

        <configuration>
          <archive>
            <!-- Only create an index if it indexes ALL classes used in all the classpath jars -->
            <index>false</index>
            <manifest>
              <addClasspath>false</addClasspath>
            </manifest>
            <manifestEntries>
              <class-path>${DUCC_CP}</class-path>
              <Ducc-Version>${project.version}</Ducc-Version>
              <Ducc-OS-Id>${os.name} ${os.arch} ${os.version}</Ducc-OS-Id>
              <Ducc-Bassedir>${basedir}</Ducc-Bassedir>
              <Ducc-Java-Vendor>${java.vendor}</Ducc-Java-Vendor>
              <Project-Title>Apache UIMA DUCC</Project-Title>
            </manifestEntries>
          </archive>
        </configuration>

        <executions>

		  <!-- Create a manifest-only jar that will be placed up one level under <ducc-home>/lib -->
          <execution>
            <id>DuccCli</id>
            <goals><goal>jar</goal></goals>
            <phase>package</phase>
            <configuration>
              <finalName>${project.artifactId}</finalName>
			  <archive>
 				<manifest>
				  <addClasspath>false</addClasspath>
				</manifest>
				<manifestEntries>
				  <class-path>${DUCC_CP2}</class-path>
				</manifestEntries>
			  </archive>
              <excludes>
                <exclude>org*/</exclude>
                <exclude>META-INF/maven/*</exclude>
                <exclude>**/pom.*</exclude>
                <exclude>**/DEPENDENCIES</exclude>
              </excludes>
			  <resources>
				 <resource>
					<directory>target/maven-shared-archive-resources/META-INF</directory>
                    <targetPath>META-INF</targetPath>
                    <includes>
                      <include>NOTICE</include>
                      <include>LICENSE</include>
                    </includes>
				</resource>
			  </resources>

            </configuration>
          </execution>

		  <!-- Build the cli jar last so it is the one installed in the repository !! -->
          <execution>
            <id>${project.artifactId}</id>
            <goals><goal>jar</goal></goals>
            <phase>package</phase>
            <configuration>
              
              <archive>
              </archive>
            </configuration>
          </execution> 

        </executions>
        
      </plugin>
    </plugins>
  </build>
  
</project>
    
