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

  <!-- packaging>pom</packaging -->

  <!-- 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/uima-ducc/tags/uima-ducc-2.2.2/uima-ducc-cli
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/uima/uima-ducc/tags/uima-ducc-2.2.2/uima-ducc-cli
    </developerConnection>
    <url>
      http://svn.apache.org/viewvc/uima/uima-ducc/tags/uima-ducc-2.2.2/uima-ducc-cli
    </url>
  </scm>

  <properties>
    <!-- This is for the manifest-only public uima-ducc-cli.jar that goes directly in lib -->
    <DUCC_CP>
uima-ducc/uima-ducc-cli-${ducc.version}.jar uima-ducc/uima-ducc-common-${ducc.version}.jar uima-ducc/uima-ducc-transport-${ducc.version}.jar uima-ducc/user/uima-ducc-user-${ducc.version}.jar
    </DUCC_CP>
  </properties>

  <dependencies>

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

    </dependency>

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

    <dependency>
      <groupId>org.apache.uima</groupId>
      <artifactId>uima-ducc-user</artifactId>
	  <exclusions>
		<exclusion>
		  <groupId>*</groupId>
		  <artifactId>*</artifactId>
		</exclusion>
	  </exclusions>
    </dependency>

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

	<!-- Gson is needed just for one of the junit tests -->
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
	  <scope>test</scope>
    </dependency>

  </dependencies>

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

        <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_CP}</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>
    
