<?xml version="1.0"?>
<project name="axis2" default="quick"

    >

  <!--
  This is an ant build file to
   -invoke maven to build the distribution
   -copy the created files into the local Maven2 cache
   -maybe deploy to a local cache, though that is NPE'ing right now.
  -->


  <!--
  not putting this at the top level as it breaks idea's ant-awareness
  xmlns:m2="antlib:org.apache.maven.artifact.ant"
  -->

  <!--any personal overrides; not read by maven-->
  <property file="build.properties"/>

  <!--any personal overrides; also read by maven-->
  <property file="project.properties"/>
  <!--read in project properties, including library versions-->
  <property file="etc/project.properties"/>

  <target name="default">

  </target>

  <target name="init" >
    <!--macro for maven -->
    <presetdef name="maven">
      <exec failonerror="true" executable="maven">
      </exec>
    </presetdef>

    <!-- location of m2 repository (with new layout) -->
    <property name="m2.repository" location="${user.home}/.m2/repository"/>
    <!-- original m1 repository -->
    <property name="m1.repository" location="${user.home}/.maven/repository"/>

    <property name="project.xml" location="etc/project.xml" />
    <!-- pull out the value of the project version from the maven1 file-->
    <xmlproperty file="${project.xml}"
        keeproot="true" />

    <property name="target.dir" location="target"/>
    <property name="artifact.title" value="${project.id}-${project.currentVersion}" />
    <property name="target.jar" location="${target.dir}/${artifact.title}.jar"/>
    <property name="target.pom" location="${target.dir}/${artifact.title}.pom"/>

  </target>

  <target name="clean" depends="init"
      description="clean everything">
    <maven>
      <arg value="multiproject:clean"/>
    </maven>
  </target>

  <target name="dist" depends="init"
      description="make a distribution">
    <maven>
    </maven>
  </target>

  <target name="dist-lite" depends="init"
      description="make a distribution, skip testing">
    <maven>
      <arg value="-Dmaven.test.skip=true" />
    </maven>
  </target>


  <!-- inline creation of a very minimal (zero dependency) pom -->
  <target name="m2-pom" depends="init" xmlns:m2="antlib:org.apache.maven.artifact.ant">
    <echo message="Creating Pom ${target.pom}" level="verbose"/>
    <!--ant1.7's echoxml makes this easier -->
<echo file="${target.pom}"><![CDATA[<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>${project.id}</groupId>
  <artifactId>${project.id}</artifactId>
  <packaging>jar</packaging>
  <version>${project.currentVersion}</version>
  <dependencies>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${log4j.version}</version>
    </dependency>
  </dependencies>
</project>
]]></echo>
    <m2:pom id="m2.pom" file="${target.pom}"/>
  </target>


  <target name="m2-wagons" depends="init"
      xmlns:m2="antlib:org.apache.maven.artifact.ant">
    <property name="wagon.version" value="1.0-alpha-5"/>
    <m2:install-provider artifactId="wagon-ssh"
        version="${wagon.version}"/>
    <m2:install-provider artifactId="wagon-ssh-external"
        version="${wagon.version}"/>
    <m2:install-provider artifactId="wagon-file"
        version="${wagon.version}"/>
    <m2:install-provider artifactId="wagon-ftp"
        version="${wagon.version}"/>
  </target>

  <target name="ready-to-deploy" depends="m2-pom,dist-lite" />

  <target name="m2-install" depends="ready-to-deploy"
      description="install the libray into the local m2 repository"
      xmlns:m2="antlib:org.apache.maven.artifact.ant">
    <m2:install file="${target.jar}">
      <pom refid="m2.pom"/>
    </m2:install>
  </target>

  <target name="m2-filesys-deploy" depends="ready-to-deploy"
      xmlns:m2="antlib:org.apache.maven.artifact.ant">
    <fail unless="filesys.url">
      filesys.url needs to be set to a file: url of the local destination
      for in-filesystem deployment
    </fail>
    <m2:deploy file="${target.jar}">
      <remoteRepository url="${filesys.url}"/>
      <pom refid="m2.pom"/>
    </m2:deploy>
  </target>

  <target name="quick" depends="init"
      description="make a distribution">
    <mkdir dir="${basedir}/target/classes/"/>
    <path id="classpath">
      <fileset dir="${lib.dir}">
        <include name="**/*.jar"/>
      </fileset>
    </path>

    <javac srcdir="${basedir}/modules"
      destdir="${basedir}/target/classes/"
      debug="true"
      source="1.4"
      classpathref="classpath">
      <include name="addressing/src/**/*.java"/>
      <include name="adb/src/**/*.java"/>
      <include name="codegen/src/**/*.java"/>
      <include name="common/src/**/*.java"/>
      <include name="core/src/**/*.java"/>
      <include name="integration/src/**/*.java"/>
      <include name="saaj/src/**/*.java"/>
      <include name="samples/src/**/*.java"/>
      <include name="security/src/**/*.java"/>
      <include name="wsdl/src/**/*.java"/>
      <include name="xml/src/**/*.java"/>
      <include name="doom/src/**/*.java"/>
    </javac>
    <copy todir="${basedir}/target/classes/">
      <fileset dir="${basedir}/modules/common/src">
        <include name="**/*.properties"/>
        <include name="**/*.xsl"/>
      </fileset>
      <fileset dir="${basedir}/modules/core/conf">
        <include name="**/*.properties"/>
      </fileset>
      <fileset dir="${basedir}/modules/core/src">
        <include name="**/axis2.xml"/>
      </fileset>
      <fileset dir="${basedir}/modules/codegen/src">
        <include name="**/*.properties"/>
        <include name="**/*.xsl"/>
        <include name="**/*.xsd"/>
      </fileset>
    </copy>
    <mkdir dir="${basedir}/target/repo/modules"/>
    <copy todir="${basedir}/target/repo/modules">
      <fileset dir="${basedir}/modules/addressing/target">
        <include name="**/*.mar"/>
      </fileset>
      <fileset dir="${basedir}/modules/security/target">
        <include name="**/*.mar"/>
      </fileset>
    </copy>
    <copy todir="${basedir}/target/repo">
      <fileset dir="${basedir}/modules/core/src/org/apache/axis2/deployment">
        <include name="axis2.xml"/>
      </fileset>
    </copy>
  </target>


</project>