<?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 has been created manually by the Ant Development Team. Please
		contact us if you are not satisfied with the data contained in this
		POM . URL : http://ant.apache.org
	-->
<project>
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.apache.ant</groupId>
	<artifactId>ant-antunit</artifactId>
	<packaging>jar</packaging>
	<version>1.2-SNAPSHOT</version>

	<!--
		Test doesn't work from maven, you have to fight with tricky classpath
		issue to solve that See http://markmail.org/thread/6giwzqproxidcwyc
		And http://markmail.org/thread/5bbknx6hm7liqvi6 (until it is solved, I
		comment test setting)
	-->
	<properties>
		<maven.test.skip>true</maven.test.skip>
	</properties>


	<build>
		<sourceDirectory>src/main</sourceDirectory>
		<testSourceDirectory>src/tests/junit</testSourceDirectory>
		<plugins>
		<!-- 	
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.0.1</version>
				<executions>
					<execution>
						<goals>
							<goal>testCompile</goal>
						</goals>
						<configuration>
							<source>1.5</source>
							<target>1.5</target>
						</configuration>
					</execution>
				</executions>
			</plugin>
		-->
		</plugins>
	</build>
	<dependencies>
		<dependency>
			<groupId>org.apache.ant</groupId>
			<artifactId>ant</artifactId>
			<version>1.7.1</version>
			<scope>compile</scope>
			<exclusions>
				<exclusion>
					<groupId>org.apache.ant</groupId>
					<artifactId>ant-launcher</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit-dep</artifactId>
			<version>4.4</version>
			<scope>compile</scope>
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>org.apache.ant</groupId>
			<artifactId>ant-launcher</artifactId>
			<version>1.7.1</version>
			<scope>runtime</scope>
		</dependency>

		<!--
			<dependency> <groupId>org.apache.ant</groupId>
			<artifactId>ant-testutil</artifactId> <version>1.7.1</version>
			<scope>test</scope> </dependency>
		-->
	</dependencies>
</project>
