<?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.    
--><!-- This pom serves as the release top level project for the multi-module 
	project UIMA-DUCC --><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>3.0.1-SNAPSHOT</version>
		<relativePath>uima-ducc-parent/pom.xml</relativePath>
	</parent>

	<artifactId>uima-ducc</artifactId>
	<packaging>pom</packaging>
	<name>Apache UIMA-DUCC: ${project.artifactId}</name>
	<description>The top project for UIMA-DUCC</description>
	<url>${uimaWebsiteUrl}</url>


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

	<!-- override pom setting in the build project. JIRA 5.1 needs different 
		URL -->
	<issueManagement>
		<system>Jira</system>
		<url>https://issues.apache.org/jira/browse/UIMA</url>
	</issueManagement>

	<!-- name the artifacts (zip,tar) -->
	<properties>
		<assemblyFinalName>uima-ducc-${project.version}</assemblyFinalName>
	</properties>

	<!-- declare dependency on each DUCC project -->
	<dependencyManagement>
	   <dependencies>

		<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-transport</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-agent</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-pm</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-rm</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-sm</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-cli</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-web</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-examples</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-user</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-workitem-v3</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-container</artifactId>
			<version>${project.version}</version>
		</dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>

		<!--dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-as</artifactId>
                        <type>tar.gz</type>
		</dependency -->


		<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>uima-ducc-agent</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-pm</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-rm</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-sm</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-orchestrator</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-cli</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-examples</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-database</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-user</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-workitem-v2</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-workitem-v3</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uima-ducc-container</artifactId>
		</dependency>
	</dependencies>
	<build>
		<resources />



		<plugins>

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-resources-plugin</artifactId>
  <executions>
    <execution>
      <id>readme-releasenotes-version-replace</id>
      <phase>process-resources</phase>
      <goals>
        <goal>copy-resources</goal>
      </goals>
      <configuration>
        <outputDirectory>${project.basedir}/target</outputDirectory>
        <resources>                                        
          <resource>
            <directory>${project.basedir}</directory>
            <includes>
              <include>README</include>
              <include>RELEASE_NOTES.html</include>
            </includes>
            <filtering>true</filtering>
          </resource>
        </resources>
        <encoding>UTF-8</encoding>
      </configuration>            
    </execution>
  </executions>
</plugin>



			<!-- This java doc config is for building the ones distributed with the 
				bin packaging, and also posted on our website. -->
			<plugin>
				<artifactId>maven-javadoc-plugin</artifactId>
				<executions>
					<execution>
						<id>javadocs-distr</id>
						<phase>prepare-package</phase> <!-- must be before assembly -->
						<!--phase>deploy</phase -->   <!-- comment above and uncomment to disable javadocs, for testing/experimentation, 
							with assembly:assembly -->
						<goals>
							<goal>javadoc</goal>
						</goals>
						<configuration>
						    <source>1.7</source>
							<quiet>true</quiet>
							<groups>
								<group>
									<title>Packages</title>
									<packages>*</packages>
								</group>
							</groups>

							<!--verbose>true</verbose -->
							<sourcepath>
								uima-ducc-common/src/main/java:uima-ducc-cli/src/main/java
							</sourcepath>

                            <show>
                              package
                            </show>

							<subpackages>org.apache.uima</subpackages>

							<excludePackageNames>
                              org.apache.uima.ducc.cli.*:org.apache.uima.ducc.api.*:org.apache.uima.ducc.common.*:org.apache.uima.ducc.transport.*:org.apache.uima.ducc.agent.*:org.apache.uima.ducc.examples.*:org.apache.uima.ducc.orchestrator.*:org.apache.uima.ducc.pm.*:org.apache.uima.ducc.rm.*:org.apache.uima.ducc.sm.*:
                            </excludePackageNames>

							<!-- add a few classes in impl packages that are directly used by 
								user code -->
							<additionalparam>

								${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/IServiceStatistics.java
								${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccRmAdmin.java
                                ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/DuccAdminEvent.java
                                ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminQLoad.java
                                ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminQLoadReply.java
                                ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminQOccupancy.java
                                ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminQOccupancyReply.java
                                ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminReconfigure.java
                                ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminReply.java
                                ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminVaryOff.java
                                ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmAdminVaryOn.java
                                ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedClass.java
                                ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedMachine.java
                                ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedNodepool.java
                                ${basedir}/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/admin/event/RmQueriedShare.java

								${basedir}/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceReply.java
								${basedir}/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/sm/IServiceDescription.java

								${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/AServicePing.java
								${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobCancel.java
								${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccJobSubmit.java
								${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccManagedReservationCancel.java
								${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccManagedReservationSubmit.java
								${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationCancel.java
								${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccReservationSubmit.java
								${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceApi.java
								${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceCancel.java
								${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/DuccServiceSubmit.java
								${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IDuccCallback.java
								${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/IDuccMonitor.java
								${basedir}/uima-ducc-cli/src/main/java/org/apache/uima/ducc/cli/CliBase.java

							</additionalparam>

							<!-- Link these to the uimaj javadocs on apache.org -->
							<!-- links>
								<link>http://uima.apache.org/d/uimaj-${uimajDependencyVersion}/apidocs</link>
							</links -->
							<doctitle>Apache UIMA DUCC Java SDK ${project.version} User-Level
								API Documentation</doctitle>
							<windowtitle>Apache UIMA DUCC Java SDK ${project.version}
								User-Level API Documentation</windowtitle>
						</configuration>
					</execution>
				</executions>

			</plugin>
		    <!-- Ducc includes the full UIMA-AS binary distribution
                 We get an unzipped version of that and unpack it into
                 target/uima-as -->

            <!--  must come before the unpack -->      
			
            <plugin>
               <groupId>org.apache.uima</groupId>
               <artifactId>uima-build-helper-maven-plugin</artifactId>
               <executions>
               <execution>
                  <id>get-uima-as</id>
                  <phase>prepare-package</phase>
                  <goals><goal>copy-from-apache-dist</goal></goals>
                  <configuration>
                     <version>${org.apache.uima.as.version}</version>
                     <artifactId>uima-as</artifactId>
                     <type>tar.gz</type>
                  </configuration>
               </execution>
               </executions> 
            </plugin>
			
			<plugin>
			
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<executions>





                    <execution>
                      <!-- use the dependency:unpack goal to unpack the 
                         base binary uima-as distribution -->
                      <id>unpack uima-as Bin</id>
                      <phase>prepare-package</phase>
                      <goals><goal>unpack</goal></goals>
                      <configuration>
                        <overWriteIfNewer>true</overWriteIfNewer>
                        <artifactItems>
                          <artifactItem>
                            <groupId>org.apache.uima</groupId>
                            <artifactId>uima-as</artifactId>
                            <version>${org.apache.uima.as.version}</version>
                            <type>tar.gz</type>
                            <classifier>bin</classifier>
                            <outputDirectory>${project.build.directory}/uima-as</outputDirectory>
                          </artifactItem>
                        </artifactItems>
                      </configuration>
                    </execution>
                    
                    <execution>
                      <!-- use the dependency:unpack goal to unpack the 
                         base binary uima-as distribution -->
                      <id>unpack cassandra Bin</id>
                      <phase>prepare-package</phase>
                      <goals><goal>unpack</goal></goals>
                      <configuration>
                        <overWriteIfNewer>true</overWriteIfNewer>
                        <artifactItems>
                          <artifactItem>
                            <groupId>org.apache.cassandra</groupId>
                            <artifactId>apache-cassandra</artifactId>
                            <version>${cassandra.server.version}</version>
                            <type>tar.gz</type>
                            <classifier>bin</classifier>
                            <outputDirectory>${project.build.directory}/cassandra</outputDirectory>
                          </artifactItem>
                        </artifactItems>
                      </configuration>
                    </execution>
                    
                    
					<execution>
						<!-- use the dependency:unpack goal to unpack the Jetty release -->
						<id>unpack-jetty-distro</id>
						<phase>prepare-package</phase>
						<goals>
							<goal>unpack</goal>
						</goals>
						<configuration>
							<overWriteIfNewer>true</overWriteIfNewer>
							<artifactItems>
								<artifactItem>
									<groupId>org.eclipse.jetty</groupId>
									<artifactId>jetty-distribution</artifactId>
									<version>${jetty.version}</version>
									<type>zip</type>
									<outputDirectory>${project.build.directory}/jetty</outputDirectory>
								</artifactItem>
							</artifactItems>
						</configuration>
					</execution>


				</executions>
			</plugin>

			<!--plugin>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.5</version>
				<executions>
					<execution>
						<id>copy-resources</id>
						<phase>process-resources</phase>
						<goals>
							<goal>copy-resources</goal>
						</goals>
						<configuration>
							<overwrite>true</overwrite>
							<outputDirectory>target/maven-shared-archive-resources/META-INF</outputDirectory>
							<resources>
								<resource>
									<directory>.</directory>
									<includes>
										<include>LICENSE</include>
										<include>NOTICE</include>
									</includes>


								</resource>
							</resources>
						</configuration>
					</execution>
				</executions>
			</plugin -->

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
      <execution>
        <phase>package</phase>
        <configuration>
          <tasks>

            <replace dir="${project.build.directory}/uima-as/apache-uima-as-${org.apache.uima.as.version}/bin">
              <include name="**/dd2spring.xsl" />
             <replacefilter token="scope=&quot;singleton&quot;" value="" />
             <replacefilter token="spring-beans.dtd" value="spring-beans-2.0.dtd" />
            </replace>             
 
            <chmod file="${project.build.directory}/uima-as/apache-uima-as-${org.apache.uima.as.version}/bin/dd2spring.xsl" perm="ugo+rx" />
          </tasks>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin> 

			<!-- Override default assemble plug-in to use newer version of assembly 
				plugin Version 2.4 fixes a bug http://jira.codehaus.org/browse/PLXCOMP-176 -->
			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<executions>
					<execution>
						<id>default-cli</id>
						<configuration>
							<descriptors>
								<descriptor>do-not-use--mvn-assembly-assembly--instead-use-mvn-install</descriptor>
							</descriptors>
						</configuration>
					</execution>
					<execution>
					    <!-- keep the id of this plugin the same as in the uima-parent's pom.
					         Otherwise, maven will run this plugin and the parents plugin 
					         and will build ducc's tgz twice  -->
						<id>uima-distr</id>
						<phase>integration-test</phase>
						<goals>
							<goal>single</goal>
						</goals>
						<configuration>
							<descriptors>
								<descriptor>src/main/assembly/bin.xml</descriptor>
							</descriptors>
							<finalName>uima-ducc-${project.version}</finalName>
							<tarLongFileMode>gnu</tarLongFileMode>
						</configuration>
					</execution>
				</executions>
			</plugin>
            <!-- May need to disable this because of a JIRA bug causing only 100 JIRas to be included.
             -->
			<plugin>
			    <groupId>org.apache.maven.plugins</groupId>
			    <artifactId>maven-changes-plugin</artifactId>
			    <executions>
			    	<execution>
			           <id>default-cli</id>
				   <configuration>
				      <fixVersionIds>${jiraVersion}</fixVersionIds>
				   </configuration>
				</execution>
			    </executions>
			</plugin>
<!--plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
      <execution>
        <phase>prepare-package</phase>
        <configuration>
          <tasks>
            <echo>Updating README with Ducc Version: ${project.version}</echo>
            <copy file="${basedir}/README" tofile="${basedir}/target/README" />
            <replace token="@@ducc.version@@" value="${project.version}" file="${basedir}/target/README" />                                 
            <copy file="${basedir}/RELEASE_NOTES.html" tofile="${basedir}/target/RELEASE_NOTES.html" />
            <replace token="@@ducc.version@@" value="${project.version}" file="${basedir}/target/RELEASE_NOTES.html" />                                 
          </tasks>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin -->
		</plugins>
		<!-- /pluginManagement -->
	</build>

	<!-- Include all ducc modules -->
	<modules>
		<module>uima-ducc-parent</module>
		<module>uima-ducc-cli</module>
		<module>uima-ducc-pm</module>
		<module>uima-ducc-rm</module>
		<module>uima-ducc-sm</module>
		<module>uima-ducc-orchestrator</module>
		<module>uima-ducc-common</module>
		<module>uima-ducc-transport</module>
		<module>uima-ducc-agent</module>
		<module>uima-ducc-duccdocs</module>
		<module>uima-ducc-web</module>
		<module>uima-ducc-examples</module>
		<module>uima-ducc-database</module>
		<module>uima-ducc-spawn</module>
		<module>uima-ducc-user</module>
		<!-- Note: uima-ducc-container has a test dependency on uima-ducc-user so must be built after it -->
		<module>uima-ducc-container</module>
        <module>uima-ducc-pullservice</module>
        <module>uima-ducc-workitem-v2</module>
        <module>uima-ducc-workitem-v3</module>
  </modules>
</project>
