<?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>parent-pom</artifactId>
		<version>13</version>
		<relativePath />
	</parent>

	<artifactId>uima-ducc-parent</artifactId>
	<version>3.0.1-SNAPSHOT</version>
        <name>${uima.ducc} ${project.artifactId}</name>
	<packaging>pom</packaging>
	<!-- Add project inception year. This is used by javadoc plugin   -->
	<!-- also used when generating NOTICE file for DUCC's jars -->
    <inceptionYear>2012</inceptionYear>
    
	<!-- 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/trunk/uima-ducc-parent
    </connection>
		<developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/uima/uima-ducc/trunk/uima-ducc-parent
    </developerConnection>
		<url>
      http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-parent
    </url>
	</scm>

	<!-- The repositories section is duplicated from the parent pom one, and 
		adds the Apache Snapshot Nexus repository where UIMA snapshots are deployed. 
		This is needed if for instance, a project depends on some new SNAPSHOT level 
		of a build tool, where the users hasn't checked out the build tooling. This 
		allows maven to find the snapshots when looking for the parent of this pom -->
	<repositories>
		<repository>
			<id>eclipsePlugins</id>
			<name>Eclipse components</name>
			<layout>default</layout>
			<url>https://repo1.maven.org/eclipse</url>

			<releases>
				<updatePolicy>never</updatePolicy>
				<checksumPolicy>fail</checksumPolicy>
			</releases>

			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>

		<!-- modify central repository access: Turn on checksum checking -->
		<repository>
			<id>central</id>
			<name>Maven Repository Switchboard</name>
			<layout>default</layout>
			<url>https://repo1.maven.org/maven2</url>

			<releases>
				<enabled>true</enabled>
				<checksumPolicy>fail</checksumPolicy>
				<updatePolicy>never</updatePolicy>
			</releases>

			<snapshots>
				<enabled>false</enabled>
			</snapshots>

		</repository>

		<!-- this is needed if this pom refers to a snapshot of the parent -->
		<repository>
			<id>apache.snapshots</id>
			<name>Apache Snapshot Repository</name>
			<url>http://repository.apache.org/snapshots</url>
			<releases>
				<enabled>false</enabled>
			</releases>
		</repository>

	</repositories>

	<pluginRepositories>
		<pluginRepository>
			<id>apache.snapshots.plugins</id>
			<name>Apache Snapshot Repository - Maven plugins</name>
			<url>http://repository.apache.org/snapshots</url>
			<layout>default</layout>
			<releases>
				<enabled>false</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
				<checksumPolicy>fail</checksumPolicy>
				<updatePolicy>never</updatePolicy>
			</snapshots>
		</pluginRepository>

	</pluginRepositories>

	<!-- Declare version numbers for all dependencies -->
	<properties>
	    <uima.ducc>Apache UIMA DUCC:</uima.ducc>
		<!-- Ducc jira version -->
		<!--jiraVersion>12343013</jiraVersion-->
		<jiraVersion>3.0.0-Ducc</jiraVersion>
		
		<compat.level>BACKWARD_COMPATIBLE_USER</compat.level>
        <compat.previous.version>2.2.2</compat.previous.version>
        <api_check_oldVersion>2.2.2</api_check_oldVersion>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.surefire.argLine />
        <maven.surefire.java9 />

        <jacoco.argLine />
        <java.version>8</java.version>
        
		<maven.build.timestamp.format>MM-dd-yyyy HH:mm</maven.build.timestamp.format>
		<ducc.version>${project.version}</ducc.version>
		<org.springframework.version>4.3.9.RELEASE</org.springframework.version>
		<org.apache.activemq.version>5.15.2</org.apache.activemq.version>
		<org.apache.camel.version>2.19.3</org.apache.camel.version>
		<org.apache.uima.version>2.10.2</org.apache.uima.version> <!--Same as uima-as-->
		<org.apache.uima.as.version>2.10.2</org.apache.uima.as.version>
		<com.google.guava.version>18.0</com.google.guava.version>        <!-- updated from r09 for cassandra -->
		<commons.cli.version>1.2</commons.cli.version>
		<joda.time.version>2.4</joda.time.version>
		<jsch.version>0.1.29</jsch.version>
		<commons.codec.version>1.9</commons.codec.version>
		<commons.collections.version>3.2.2</commons.collections.version>
		<commons.lang.version>3.1</commons.lang.version>
		<commons.math.version>3.2</commons.math.version>
		<log4j.version>1.2.17</log4j.version>
		<slf4j.version>1.7.25</slf4j.version>                <!-- updated from 1.6.4 for cassandra -->
		<xmlbeans.version>2.5.0</xmlbeans.version>
		<junit.version>4.8.2</junit.version>
		<servlet.api.version>2.5</servlet.api.version>
		<commons.management.version>1.0</commons.management.version>
		<commons.pool.version>2.4.2</commons.pool.version>
		<geronimo.servlet-spec.version>1.0</geronimo.servlet-spec.version>
		<xpp3.version>1.1.4c</xpp3.version>
		<xstream.version>1.4.10</xstream.version>   
		<xmlpull.version>1.1.3.1</xmlpull.version>
		<mina.core.version>1.1.7</mina.core.version>
		<aopalliance.version>1.0</aopalliance.version>
		<google.gson.version>2.2.2</google.gson.version>
		<cglib.version>2.2.0</cglib.version>
		<libpam.version>1.7</libpam.version>
		<jna.version>4.2.2</jna.version>
		<datatables.version>1.9.1</datatables.version>
		<jetty.version>9.4.14.v20181114</jetty.version>
		<orbit-org-apache-jasper.version>2.1.0.v201110031002</orbit-org-apache-jasper.version>
		<servlet-api.version>2.5</servlet-api.version>

        <!-- These are all cassandra client -->
        <cassandra.driver.version>3.6.0</cassandra.driver.version>
        <netty.version>4.0.44.Final</netty.version>
        <hdr.version>2.1.4</hdr.version>
        <metrics.version>3.0.2</metrics.version>
        <snappy.version>1.1.1.7</snappy.version>
        <lz4.version>1.3.0</lz4.version>
        <hdr.version>2.1.4</hdr.version>
        <!-- end of cassandra client -->
        <cassandra.server.version>3.11.3</cassandra.server.version>
        <apache.httpcomponents.httpclient.version>4.3.5</apache.httpcomponents.httpclient.version>
		<http.commons.client.version>4.5.3</http.commons.client.version>
		<http.commons.client-cache.version>4.3.5</http.commons.client-cache.version>
		<http.commons.core.version>4.4.6</http.commons.core.version>
        
        <!-- Needed for NOTICE file packaged in each jar under META-INF -->
        <projectTimeSpan>2012</projectTimeSpan>
        
        <!-- Needed for NOTICE file packaged in each jar under META-INF -->
		<uimaASNoticeText>
Portions of UIMA-AS were originally developed by
International Business Machines Corporation and are
licensed to the Apache Software Foundation under the
"Software Grant License Agreement", informally known as the 
"IBM UIMA-EE License Agreement".
Copyright (c) 2007, 2008 IBM Corporation
       </uimaASNoticeText>

        <!-- Needed for NOTICE file packaged in each jar under META-INF -->
       <uimaDUCCNoticeText>
Portions of UIMA-DUCC were originally developed by
International Business Machines Corporation and are
licensed to the Apache Software Foundation under the
"Software Grant License Agreement", informally known as the 
"IBM UIMA-DUCC License Agreement".
Copyright (c) 2012 IBM Corporation
      </uimaDUCCNoticeText>
      
        <!-- Needed for NOTICE file packaged in each jar under META-INF -->
		<postNoticeText>
${ibmNoticeText}

${uimaASNoticeText}

${uimaDUCCNoticeText}

		</postNoticeText>		

	</properties>

	<!-- dependencyManagement is a declaration section naming each artifact 
		and version the ducc components depend on. -->
	<dependencyManagement>
		<dependencies>

            <dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-server</artifactId>
				<version>${jetty.version}</version>
			</dependency>
			
		    <dependency>
              <groupId>xpp3</groupId>
              <artifactId>xpp3</artifactId>
              <version>${xpp3.version}</version>
            </dependency>
            
            <dependency>
              <groupId>org.apache.httpcomponents</groupId>
              <artifactId>httpclient</artifactId>
              <version>${apache.httpcomponents.httpclient.version}</version>
            </dependency>


            <!--dependency>
              <groupId>org.apache.httpcomponents</groupId>
              <artifactId>httpclient</artifactId>
              <version>${http.commons.client.version}</version>
            </dependency-->
        
            <dependency>
              <groupId>org.apache.httpcomponents</groupId>
              <artifactId>httpclient-cache</artifactId>
              <version>${http.commons.client-cache.version}</version>
            </dependency>
            
            <dependency>
               <groupId>org.apache.httpcomponents</groupId>
               <artifactId>httpcore</artifactId>
               <version>${http.commons.core.version}</version>
             </dependency>

             <dependency>
			    <groupId>org.apache.uima</groupId>
			    <artifactId>uima-ducc-cli</artifactId>
			    <version>${project.version}</version>
    		 </dependency>

             <dependency>
			    <groupId>org.apache.uima</groupId>
			    <artifactId>uima-ducc-user</artifactId>
			    <version>${project.version}</version>
    		 </dependency>

            <dependency>
			    <groupId>org.apache.uima</groupId>
			    <artifactId>uima-ducc-pullservice</artifactId>
			    <version>${project.version}</version>
    		 </dependency>
    		 
		     <dependency>
			    <groupId>org.apache.uima</groupId>
			    <artifactId>uima-ducc-orchestrator</artifactId>
			    <version>${project.version}</version>
  		     </dependency>

             <dependency>
			    <groupId>org.apache.uima</groupId>
			    <artifactId>uima-ducc-common</artifactId>
                <version>${project.version}</version>			
		     </dependency>

             <dependency>
			    <groupId>org.apache.uima</groupId>
			    <artifactId>uima-ducc-container</artifactId>
                <version>${project.version}</version>			
		     </dependency>

             <dependency>
			    <groupId>org.apache.uima</groupId>
			    <artifactId>uima-ducc-database</artifactId>
                <version>${project.version}</version>			
		     </dependency>

             <dependency>
			    <groupId>org.apache.uima</groupId>
			    <artifactId>uima-ducc-transport</artifactId>
			    <version>${project.version}</version>
  		    </dependency>

		    <dependency>
			    <groupId>org.apache.uima</groupId>
			    <artifactId>uima-ducc-workitem-v2</artifactId>
				<version>${project.version}</version>
		    </dependency>
		       
            <dependency>
			    <groupId>org.apache.uima</groupId>
			    <artifactId>uima-ducc-sm</artifactId>
			    <version>${project.version}</version>
  		    </dependency>

			<dependency>
				<groupId>net.java.dev.jna</groupId>
				<artifactId>jna</artifactId>
				<version>${jna.version}</version>
			</dependency>
			
			<dependency>
				<groupId>org.kohsuke</groupId>
				<artifactId>libpam4j</artifactId>
				<version>${libpam.version}</version>
			</dependency>


			<dependency>
				<groupId>com.google.code.gson</groupId>
				<artifactId>gson</artifactId>
				<version>${google.gson.version}</version>

			</dependency>

			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-log4j12</artifactId>
				<version>${slf4j.version}</version>
			</dependency>



			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>jcl-over-slf4j</artifactId>
				<version>${slf4j.version}</version>
			</dependency>

			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-api</artifactId>
				<version>${slf4j.version}</version>
			</dependency>

			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>${junit.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.xmlbeans</groupId>
				<artifactId>xmlbeans</artifactId>
				<version>${xmlbeans.version}</version>
			</dependency>

			<dependency>
				<groupId>log4j</groupId>
				<artifactId>log4j</artifactId>
				<version>${log4j.version}</version>
			</dependency>

			<dependency>
				<groupId>commons-collections</groupId>
				<artifactId>commons-collections</artifactId>
				<version>${commons.collections.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-math</artifactId>
				<version>${commons.math.version}</version>
			</dependency>


			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-lang3</artifactId>
				<version>${commons.lang.version}</version>
			</dependency>

			<dependency>
				<groupId>com.jcraft</groupId>
				<artifactId>jsch</artifactId>
				<version>${jsch.version}</version>
			</dependency>

			<!-- dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> 
				<version>${http.client.version}</version> </dependency -->

			<dependency>
				<groupId>commons-codec</groupId>
				<artifactId>commons-codec</artifactId>
				<version>${commons.codec.version}</version>
			</dependency>

			<dependency>
				<groupId>commons-cli</groupId>
				<artifactId>commons-cli</artifactId>
				<version>${commons.cli.version}</version>
			</dependency>

			<dependency>
				<groupId>com.google.guava</groupId>
				<artifactId>guava</artifactId>
				<version>${com.google.guava.version}</version>
			</dependency>

			<dependency>
				<groupId>joda-time</groupId>
				<artifactId>joda-time</artifactId>
				<version>${joda.time.version}</version>
			</dependency>

            <!-- cassandra RT -->
            <dependency>
              <groupId>io.netty</groupId>
              <artifactId>netty-handler</artifactId>
              <version>${netty.version}</version>
            </dependency>

            <dependency>
              <groupId>com.codahale.metrics</groupId>
              <artifactId>metrics-core</artifactId>
              <version>${metrics.version}</version>
            </dependency>
            
            <dependency>
	          <groupId>org.xerial.snappy</groupId>
	          <artifactId>snappy-java</artifactId>
              <version>${snappy.version}</version>
            </dependency>
            
            <dependency>
              <groupId>net.jpountz.lz4</groupId>
              <artifactId>lz4</artifactId>
              <version>${lz4.version}</version>
            </dependency>
            
            <dependency>
              <groupId>org.hdrhistogram</groupId>
              <artifactId>HdrHistogram</artifactId>
              <version>${hdr.version}</version>
            </dependency>

            <!-- end of cassandra RT -->

			<dependency>
				<groupId>org.apache.uima</groupId>
				<artifactId>uimaj-core</artifactId>
				<version>${org.apache.uima.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.uima</groupId>
				<artifactId>uimaj-examples</artifactId>
				<version>${org.apache.uima.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.uima</groupId>
				<artifactId>uimaj-as-core</artifactId>
				<version>${org.apache.uima.as.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.uima</groupId>
				<artifactId>uimaj-as-activemq</artifactId>
				<version>${org.apache.uima.as.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.uima</groupId>
				<artifactId>uimaj-as-jms</artifactId>
				<version>${org.apache.uima.as.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.activemq</groupId>
				<artifactId>activemq-server</artifactId>
				<version>${org.apache.activemq.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.activemq</groupId>
				<artifactId>activemq-client</artifactId>
				<version>${org.apache.activemq.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.activemq</groupId>
				<artifactId>activemq-web</artifactId>
				<version>${org.apache.activemq.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.activemq</groupId>
				<artifactId>activemq-camel</artifactId>
				<version>${org.apache.activemq.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.activemq</groupId>
				<artifactId>activemq-pool</artifactId>
				<version>${org.apache.activemq.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.activemq</groupId>
				<artifactId>activemq-jaas</artifactId>
				<version>${org.apache.activemq.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-core</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-context</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-http</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-http4</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>

            <dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-http-common</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>
			
			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-jetty</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-jetty9</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-jms</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-mina</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-servlet</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-test-spring</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-jetty-common</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-test</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-spring</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-stream</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-xmlbeans</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.camel</groupId>
				<artifactId>camel-xstream</artifactId>
				<version>${org.apache.camel.version}</version>
			</dependency>

            <dependency>
				<groupId>xmlpull</groupId>
				<artifactId>xmlpull</artifactId>
				<version>${xmlpull.version}</version>
			</dependency>
			
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-pool2</artifactId>
				<version>${commons.pool.version}</version>
			</dependency>



			<dependency>
				<groupId>org.apache.geronimo.specs</groupId>
				<artifactId>geronimo-servlet_3.0_spec</artifactId>
				<!--artifactId>geronimo-servlet_2.5_spec</artifactId-->
				<version>${geronimo.servlet-spec.version}</version>
			</dependency>

			<dependency>
				<groupId>com.thoughtworks.xstream</groupId>
				<artifactId>xstream</artifactId>
				<version>${xstream.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.mina</groupId>
				<artifactId>mina-core</artifactId>
				<version>${mina.core.version}</version>
			</dependency>

			<!-- dependency>
				<groupId>aopalliance</groupId>
				<artifactId>aopalliance</artifactId>
				<version>${aopalliance.version}</version>
			</dependency -->

			<!--dependency>
				<groupId>commons-httpclient</groupId>
				<artifactId>commons-httpclient</artifactId>
				<version>${commons.httpclient.version}</version>
			</dependency -->

			<dependency>
			  <groupId>org.springframework</groupId>
			  <artifactId>spring-core</artifactId>
			  <version>${org.springframework.version}</version>
			</dependency>
		
		</dependencies>
	</dependencyManagement>

	<!-- runtime dependencies that must be included in the build -->

	<dependencies>
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-pool2</artifactId>
			</dependency>

        <dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-server</artifactId>
		</dependency>
			
        <dependency>
           <groupId>xpp3</groupId>
           <artifactId>xpp3</artifactId>
        </dependency>

        <dependency>
           <groupId>org.apache.httpcomponents</groupId>
           <artifactId>httpclient</artifactId>
           <scope>runtime</scope>
        </dependency>
        
        <dependency>
           <groupId>xmlpull</groupId>
           <artifactId>xmlpull</artifactId>
           <scope>runtime</scope>
        </dependency>
        
        <dependency>
           <groupId>org.apache.httpcomponents</groupId>
           <artifactId>httpclient-cache</artifactId>
           <scope>runtime</scope>
        </dependency>
        
        <dependency>
           <groupId>org.apache.httpcomponents</groupId>
           <artifactId>httpcore</artifactId>
        </dependency>


		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-context</artifactId>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-http4</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-http</artifactId>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-http-common</artifactId>
		</dependency>


			<dependency>
				<groupId>org.apache.camel</groupId>
			<artifactId>camel-jetty-common</artifactId>
			<scope>runtime</scope>
		</dependency>


		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-mina</artifactId>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-xmlbeans</artifactId>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.mina</groupId>
			<artifactId>mina-core</artifactId>
			<scope>runtime</scope>
		</dependency>

		<!-- the next 4 may not ne needed -->
		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-servlet</artifactId>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-test-spring</artifactId>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-test</artifactId>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-stream</artifactId>
			<scope>runtime</scope>
		</dependency>

	</dependencies>

	<build>
		<finalName>${project.artifactId}-${project.version}</finalName>

		<!-- define common plugins that are shared by every pom -->
		<plugins>
		
		<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>2.10.4</version>
          <configuration>

            <source>${maven.compiler.source}</source>
            <javadocVersion>${maven.compiler.source}</javadocVersion> <!-- https://issues.apache.org/jira/browse/UIMA-5369 -->
          </configuration>
          <executions>
            <execution>
              <id>attach-javadocs</id>
              <configuration>
                <source>${maven.compiler.source}</source>
                <additionalparam>${javadoc.opts}</additionalparam>
              </configuration>
            </execution>
            <execution>
              <id>default-cli</id>  <!-- Jenkins runs this apparently 3/2015 -->
              <configuration>
                <source>${maven.compiler.source}</source>
              </configuration>
            </execution>
          </executions>
        </plugin>
		
		  <!-- Get SVN revision number and include in the manifest.
		       Disable the check for local changes and the svn update -->
		  <plugin>
			<groupId>org.codehaus.mojo</groupId>
			<artifactId>buildnumber-maven-plugin</artifactId>
			<version>1.4</version>
			<executions>
			  <execution>
				<phase>validate</phase>
				<goals>
				  <goal>create</goal>
				</goals>
			  </execution>
			</executions>
			<configuration>
			  <doCheck>false</doCheck>
			  <doUpdate>false</doUpdate>
			</configuration>
		  </plugin>


			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
			<!-- Each jar produced should have metadata attached to a Manifest -->
			<!--plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<archive>
						<manifest>
							<addClasspath>false</addClasspath>
						</manifest>
						<manifestEntries>
							<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>
							<SCM-Revision>${buildNumber}</SCM-Revision>
						</manifestEntries>
					</archive>
				</configuration>
			</plugin-->
		</plugins>

	</build>



	<profiles>
        <profile>
           <id>doclint-java8-disable</id>
           <activation>
              <jdk>[1.8,)</jdk>
           </activation>
           <properties>
              <javadoc.opts>-Xdoclint:none</javadoc.opts>
           </properties>
        </profile>
		<!--profile>
                   currently disabled. It packages java source files but doesnt package xml and other resource files when building
                   causing runtime problems.  
			<id>bundle-source-code</id>
			<build>
                            <resources>
                               <resource>
                                   <directory>src/main/java</directory>
                                   <includes>
                                         <include>**/*.java</include>
                                    </includes>
                               </resource>
                                <resource>
                                   <directory>src</directory>
                                   <includes>
                                         <include>**/*.xml</include>
                                    </includes>
                               </resource>
                            </resources>
	                </build>
		</profile -->

		<profile>
			<id>apache-release</id>
			<build>
				<plugins>

					<!-- run Release Audit Tool (RAT) on src and bin distrs -->
					<plugin>
						<groupId>org.apache.rat</groupId>
						<artifactId>apache-rat-plugin</artifactId>
						<executions>
							<execution>

								<id>default-cli</id>
								<configuration>

									<excludes combine.children="append">
										<!-- workaround https://issues.apache.org/jira/browse/RAT-97 -->
										<exclude>**/.settings/*</exclude>
										<exclude>**/keystore</exclude>
										<exclude>uima-ducc-agent/**</exclude>
										<exclude>uima-ducc-cli/**</exclude>
										<exclude>uima-ducc-common/**</exclude>
										<exclude>uima-ducc-duccdocs/**</exclude>
										<exclude>**/*.dict</exclude>
										<exclude>**/*.log</exclude>
										<exclude>.pydevproject</exclude>
										<exclude>**/*.out</exclude>
										<exclude>**/*.png</exclude>
										<exclude>**/*.jpg</exclude>
										<exclude>**/*.yaml</exclude>
										<exclude>**/crontab.txt</exclude>
										<exclude>**/*.tex</exclude>
										<exclude>**/Makefile</exclude>
										<exclude>uima-ducc-spawn/src/Makefile</exclude>
										<exclude>uima-ducc-examples/**</exclude>
										<exclude>uima-ducc-jd/**</exclude>
										<exclude>uima-ducc-orchestrator/**</exclude>
										<exclude>**/src/test/resources/**/*</exclude>
										<exclude>uima-ducc-parent/**</exclude>
										<exclude>uima-ducc-pm/**</exclude>
										<exclude>uima-ducc-rm/**</exclude>
										<exclude>uima-ducc-sm/**</exclude>
										<exclude>uima-ducc-spawn/**</exclude>
										<exclude>uima-ducc-transport/**</exclude>
										<exclude>uima-ducc-database/**</exclude>
										<exclude>uima-ducc-web/**</exclude>
										<exclude>uima-ducc-user/**</exclude>
										<exclude>uima-ducc-container/**</exclude>
										<exclude>**/src/main/webapp/root/opensources/**/*</exclude>
										<exclude>**/src/main/webapp/etc/**</exclude>
										<exclude>**/src/main/issuesFixed/**/*</exclude>
										<exclude>issuesFixed/jira-report.html</exclude>
									</excludes>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>

	</profiles>



</project>
