<?xml version="1.0"?>
<!--
 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 name="ant_eclipse" basedir="." default="default">

	<!-- bring in the environmental properties -->
	<property environment="env" />
	<property name="maven.home" value="${env.MAVEN_HOME}" />

	<!-- make sure we have maven -->
	<target name="check-env" description="Check if environment variables are set">
		<echo>maven.home = ${maven.home}</echo>
		<fail unless="env.MAVEN_HOME" message="You MUST set MAVEN_HOME first" />
	</target>

	<target name="default" depends="check-env">

		<condition property="maven.script" value="maven.bat">
			<and>
				<os family="windows" />
				<equals arg1="${maven.script}" arg2="$${maven.script}" />
				<not>
					<isset property="cygwin.home" />
				</not>
			</and>
		</condition>

		<condition property="maven.script" value="maven">
			<equals arg1="${maven.script}" arg2="$${maven.script}" />
		</condition>

		<!-- call maven test:test-resources -->
		<exec executable="${maven.script}" failonerror="true">
			<arg value="java:jar-resources" />
			<arg value="test:test-resources" />
			<arg value="rmic" />
		</exec>

	</target>

</project>
