<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">
<!--
   ***************************************************************
   * 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.
   ***************************************************************
   -->
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.apache.uima</groupId>
	<artifactId>uimaj-as-core</artifactId>
	<packaging>jar</packaging>
	<version>${uimaj-as-release-version}</version>
	<name>Apache UIMA Async Scaleout core</name>
	<url>http://incubator.apache.org/uima</url>
	<parent>
		<groupId>org.apache.uima</groupId>
		<artifactId>uimaj-as</artifactId>
		<version>2.3.0-incubating</version> <!-- this comment is a flag for changeVersion -->
    <relativePath>../uimaj-as</relativePath>
	</parent>
	<dependencies>

				
		<dependency>
			<groupId>commons-pool</groupId>
			<artifactId>commons-pool</artifactId>
			<version>1.2</version>
			<scope>compile</scope>
		</dependency> 

		<dependency>
			<groupId>org.apache.uima</groupId>
			<artifactId>uimaj-core</artifactId>
			<version>2.3.0-incubating</version> <!-- this comment is a flag for changeVersion -->
			<scope>compile</scope>
		</dependency>

    <dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring</artifactId>
			<version>2.0.6</version>
		</dependency> 

	</dependencies>
	<build>
		<finalName>${artifactId}</finalName>			
	</build>
  <!-- temp until we get top level uimaj-as pom -->
  <repositories>
    <repository>
      <id>incubating repository</id>
      <url>http://people.apache.org/repo/m2-incubating-repository</url>
    </repository> 
  </repositories>	
</project>