<!--
	Copyright 2008-2010 the EasyAnt project
	
	See the NOTICE file distributed with this work for additional information 
	regarding copyright ownership.
	
	Licensed 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.  
-->
<ivy-module version="2.0" xmlns:ea="http://www.easyant.org"> 
	<info organisation="org.apache.easyant.buildtypes" module="build-std-ant-plugin" revision="0.1">
	       <description>A standard build for true ant plugins, relying on standard phases, and providing compilation, execution and unit tests</description>
	       <ea:build organisation="org.apache.easyant.buildtypes" module="build-std-ant-plugin" revision="0.1"/>
        </info>
        <configurations>
                <conf name="default" description="runtime dependencies artifact can be used with this conf"/>
                <conf name="test" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases."/>
                <conf name="provided" description="this is much like compile, but indicates you expect the JDK or a container to provide it. It is only available on the compilation classpath, and is not transitive."/>
        </configurations>
	<publications>
		<artifact type="ant"/>
		<artifact type="properties"/>
	</publications>
</ivy-module>
