This is my basic ant build file for quick EJB 3.0 projects:
<?xml version="1.0"?>
<project name="ejb3-project" default="jar" basedir=".">
<property environment="env" />
<property name="src.dir" value="${basedir}/src/main" />
<property name="src.resources" value="${basedir}/src/main/resources" />
<!-- Set jboss.home and jboss.server here -->
<property file="${user.home}/.ant.properties"/>
<!-- Use JBOSS_HOME from environment if not defined in .ant.properties -->
<property name="jboss.home" value="${env.JBOSS_HOME}" />
<!-- Reasonable default if not set in .ant.properties. -->
<property name="jboss.server" value="default"/>
<property name="build.dir" value="${basedir}/target" />
<property name="build.classes.dir" value="${build.dir}/classes" />
<property name="jboss.base" value="${jboss.home}/server/${jboss.server}"/>
<property name="deploy.dir" value="${jboss.base}/deploy"/>
<path id="classpath">
<fileset dir="${jboss.base}/lib">
<include name="*.jar" />
</fileset>
<fileset dir="${deploy.dir}/ejb3.deployer">
<include name="*.jar" />
</fileset>
<fileset dir="${deploy.dir}/jboss-aop-jdk50.deployer">
<include name="*.jar" />
</fileset>
<fileset dir="${jboss.home}/lib">
<include name="*.jar" />
</fileset>
<pathelement location="${build.classes.dir}" />
</path>
<property name="build.classpath" refid="classpath" />
<target name="prepare">
<mkdir dir="${build.dir}" />
<mkdir dir="${build.classes.dir}" />
</target>
<target name="compile" depends="prepare">
<javac srcdir="${src.dir}" destdir="${build.classes.dir}" debug="on" deprecation="on" optimize="off" includes="**">
<classpath refid="classpath" />
</javac>
</target>
<target name="jar" depends="compile">
<jar jarfile="${build.dir}/${ant.project.name}.jar">
<fileset dir="${build.classes.dir}">
<include name="**/*.class" />
</fileset>
<fileset dir="${src.resources}/">
<include name="META-INF/persistence.xml" />
</fileset>
</jar>
</target>
<target name="deploy" depends="jar">
<copy file="${build.dir}/${ant.project.name}.jar" todir="${deploy.dir}" />
</target>
<target name="run.client" depends="deploy">
<java classname="com.uberdose.Client" fork="yes" dir=".">
<classpath refid="classpath" />
</java>
</target>
<target name="clean.db">
<delete dir="${jboss.base}/data/hypersonic" />
</target>
<target name="clean">
<delete dir="${build.dir}" />
<delete file="${deploy.dir}/${ant.project.name}.jar" />
</target>
</project>
It’s taken from the EJB 3.0 book, 5th edition, with some minor tweaks. Yes, I know that this page probably looks ugly in most themes but I honestly don’t care. When you do copy and paste keep in mind to change the indentation, at least for the first line to get valid XML.
March 25th, 2008 at 8:02 pm
Thank you for this post. It helped a lot. But there’s no ear file built here. Since EJB 3.0 doesn’t require deployment descriptors, how does one build an ear file for it with ant? (The task requires an application.xml.)
So, everything here looks good but it does not build or deploy an ear file.
October 2nd, 2008 at 6:29 pm
how do i run a client which take command line arguments as input.