<?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.
-->

<!-- $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $ -->

<project name="MyProject" default="dist" basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant">

  <!-- ===============================================================

  HOW TO RUN

    Download http://archive.apache.org/dist/maven/binaries/maven-ant-tasks-2.0.9.jar
    Then execute ant as follows:

    ant -lib maven-ant-tasks-2.0.9.jar

  NOTE

    You do NOT need maven-ant-tasks-2.0.9.jar to use OpenEJB for embedded EJB
    testing with Ant.  It is simply used in this example to make the build.xml
    a bit simpler.  As long as OpenEJB and it's required libraries are in the
    <junit> classpath, the tests will run with OpenEJB embedded.

  ================================================================= -->

  <artifact:remoteRepository id="apache.snapshot.repository" url="http://repository.apache.org/snapshots/"/>
  <artifact:remoteRepository id="m2.repository" url="http://repo1.maven.org/maven2/"/>

  <!-- Build Classpath -->
  <artifact:dependencies pathId="classpath.main">
    <dependency groupId="org.apache.openejb" artifactId="javaee-api-embedded" version="6.0-3"/>
  </artifact:dependencies>

  <!-- Test Build Classpath -->
  <artifact:dependencies pathId="classpath.test.build">
    <dependency groupId="junit" artifactId="junit" version="4.3.1"/>
  </artifact:dependencies>

  <!-- Test Run Classpath -->
  <artifact:dependencies pathId="classpath.test.run">
    <remoteRepository refid="apache.snapshot.repository"/>
    <remoteRepository refid="m2.repository"/>

    <dependency groupId="org.apache.openejb" artifactId="openejb-core" version="4.0.0-beta-1"/>
    <dependency groupId="junit" artifactId="junit" version="4.3.1"/>
  </artifact:dependencies>

  <!-- Properties -->

  <property name="src.main.java" location="src/main/java"/>
  <property name="src.main.resources" location="src/main/resources"/>
  <property name="src.test.java" location="src/test/java"/>
  <property name="build.main" location="target/classes"/>
  <property name="build.test" location="target/test-classes"/>
  <property name="test.reports" location="target/test-reports"/>
  <property name="dist" location="target"/>


  <target name="init">
    <mkdir dir="${build.main}"/>
    <mkdir dir="${build.test}"/>
    <mkdir dir="${test.reports}"/>
  </target>

  <target name="compile" depends="init">

    <javac srcdir="${src.main.java}" destdir="${build.main}">
      <classpath refid="classpath.main"/>
    </javac>
    <copy todir="${build.main}">
      <fileset dir="${src.main.resources}"/>
    </copy>

    <javac srcdir="${src.test.java}" destdir="${build.test}">
      <classpath location="${build.main}"/>
      <classpath refid="classpath.main"/>
      <classpath refid="classpath.test.build"/>
    </javac>
  </target>

  <target name="test" depends="compile">
    <junit fork="yes" printsummary="yes">
      <classpath location="${build.main}"/>
      <classpath location="${build.test}"/>
      <classpath refid="classpath.main"/>
      <classpath refid="classpath.test.build"/>
      <classpath refid="classpath.test.run"/>

      <formatter type="plain"/>

      <batchtest fork="yes" todir="${test.reports}">
        <fileset dir="${src.test.java}">
          <include name="**/*Test.java"/>
        </fileset>
      </batchtest>
    </junit>
  </target>

  <target name="dist" depends="test">
    <jar jarfile="${dist}/myproject-1.0.jar" basedir="${build.main}"/>
  </target>

</project>
