5577l7

Listing 7. build.xml

<?xml version="1.0" encoding="UTF-8" ?>

<project name="Book Build Script" default="ejb-jar" basedir=".">

    <!-- Import the environment -->
    <property name="env" value="env" environment="env"/>

    <!-- Inherit the JBoss directory name from the environment -->
    <property name="jboss.dist" value="${env.JBOSS_DIST}"/>

    <!-- In which directory are the .java source files? -->
    <property name="src.dir" value="${basedir}"/>

    <!-- Where should we perform our build? -->
    <property name="build.book.dir"
              value="${basedir}/build/book"/>

    <!-- Where should javac put compiled Java .class files -->
    <property name="build.classes.dir"
              value="${build.book.dir}/classes"/>

    <!-- Location of jndi.properties, which describes JNDI to the client -->
    <property name="src.resources" value="${basedir}/resources"/>

    <!-- Add the JBoss jarfiles to our CLASSPATH -->
    <path id="base.classpath">
        <pathelement location="${jboss.dist}/client/jboss-j2ee.jar"/>
        <pathelement location="${jboss.dist}/client/jaas.jar"/>
        <pathelement location="${jboss.dist}/client/jbosssx-client.jar"/>
        <pathelement location="${jboss.dist}/client/jboss-client.jar"/>
        <pathelement location="${jboss.dist}/client/jnp-client.jar"/>
    </path>

    <!-- ============================================================ -->
    <!-- Verify that JBoss jarfiles are in our CLASSPATH -->
    <!-- ============================================================ -->
    <target name="validate">
        <echo message="Validating your JBOSS_DIST environment variable"/>
        <available property="classpath_id"
                   value="base.classpath"
                   file="${jboss.dist}/client/jboss-j2ee.jar" />
    </target>

    <!-- ============================================================ -->
    <!-- Exit with a fatal error if we didn't find the jarfile -->
    <!-- ============================================================ -->
    <target name="fail_if_not_valid" unless="classpath_id">
        <fail message="jboss.dist=${jboss.dist} is not a valid JBoss dist directory"/>
    </target>

    <!-- ============================================================ -->
    <!-- Print debugging information and set things up -->
    <!-- ============================================================ -->
    <target name="init" depends="validate,fail_if_not_valid">

        <echo message="JBoss configuration seems OK!"/>

        <!-- Set the CLASSPATH -->
        <property name="classpath" refid="${classpath_id}" />

        <!-- Print current values for debugging -->
        <echo message="Using JBoss directory=${jboss.dist}" />
        <echo message="Using classpath=${classpath}" />
        <echo message="Using Source directory=${src.dir}" />
        <echo message="Using Build directory=${build.dir}" />
    </target>

    <!-- ============================================================ -->
    <!-- Compile all of our classes, clients and EJBs -->
    <!-- ============================================================ -->
    <target name="compile" depends="init">
        <echo message="Compiling all of the Java source code"/>

	<mkdir dir="${build.classes.dir}"/>
	<javac srcdir="${src.dir}" destdir="${build.classes.dir}"
	    debug="on" deprecation="on" optimize="off">
	    <classpath path="${classpath}" />
	    <include name="il/co/lerner/book/*.java" />
	</javac>
    </target>

    <!-- ============================================================ -->
    <!-- Compile our classes, and create a jarfile -->
    <!-- ============================================================ -->
    <target name="ejb-jar" depends="compile">
        <echo message="Creating the jarfile"/>
	<delete dir="${build.book.dir}/META-INF"/>

	<mkdir dir="${build.book.dir}/META-INF"/>

	<copy file="${src.dir}/il/co/lerner/book/ejb-jar.xml"
	      todir="${build.book.dir}/META-INF" />

        <copy file="${src.dir}/il/co/lerner/book/jboss.xml"
              todir="${build.book.dir}/META-INF" />

	<jar jarfile="${build.book.dir}/book.jar">
	    <fileset dir="${build.classes.dir}">
		<include name="il/co/lerner/book/Book.class" />
		<include name="il/co/lerner/book/BookHome.class" />
		<include name="il/co/lerner/book/BookBean.class" />
		<include name="il/co/lerner/book/BookPK.class" />
	    </fileset>

	    <fileset dir="${build.book.dir}">
		<include name="META-INF/ejb-jar.xml" />
		<include name="META-INF/jboss.xml" />
	    </fileset>
	</jar>
    </target>

    <!-- ============================================================ -->
    <!-- Deploy the jarfile with JBoss -->
    <!-- ============================================================ -->
    <target name="deploy" depends="ejb-jar">
        <copy file="${build.book.dir}/book.jar"
              todir="${jboss.dist}/deploy" />
    </target>

    <!-- ============================================================ -->
    <!-- Run the client from within EJB -->
    <!-- ============================================================ -->
    <target name="use-book-ejb" depends="deploy">
        <java classname="il.co.lerner.book.UseBook" fork="yes">
            <classpath>
               <pathelement path="${classpath}"/>
               <pathelement location="${build.classes.dir}"/>
               <pathelement location="${src.resources}"/>
            </classpath>
        </java>
    </target>

</project>
