所需的软件:
ant,j2sdk,j2ee.
我的环境变量设置(我定义在用户变量中):
J2EE_HOME=f:\j2sdkee1.3.1 JAVA_HOME=f:\j2sdk1.4.1_01 JBOSS_HOME=f:\jboss
Path=.;f:\j2sdk1.4.1_01\bin;f:\j2sdkee1.3.1\bin;f:\ant1.5.2\bin
CLASSPATH=.;f:\j2sdk1.4.1_01\lib\dt.jar;f:\j2sdk1.4.1_01\lib\tools.jar;f:\j2sdkee1.3.1\lib\j2ee.jar
我的模板项目的结构和文件内容,便于以后拷贝。
build.xml
<?xml version="1.0"?>
<!-- ======================================================================= -->
<!-- Template build file -->
<!-- ======================================================================= -->
<project name="template" default="main" basedir=".">
<!--
Give user a chance to override without editing this file
(and without typing -D each time they run it)
-->
<property file=".ant.properties" />
<property file="${user.home}/.ant.properties" />
<property name="Name" value="Template"/>
<property name="version" value="1.1"/>
<target name="check-jboss" unless="jboss.home">
<fail>
Property "jboss.home" is not set. Please use the file
".ant.properties" in this directory ${basedir} to
set this property. It must point to the directory which
contains the following directory: "deploy", "conf", "tmp"
etc.
</fail>
</target>
<target name="wrong-jboss" unless="jboss.present">
<fail>
Property "jboss.home" is set but it does not seem
to point to the right directory. The file "run.jar"
must be available at ${jboss.home}/bin.
</fail>
</target>
<target name="check-environment">
<antcall target="check-jboss"/>
<available property="jboss.present" file="${jboss.home}/bin/run.jar"/>
<antcall target="wrong-jboss"/>
</target>
<target name="init" depends="check-environment">
<echo message="build.compiler = ${build.compiler}"/>
<echo message="user.home = ${user.home}"/>
<echo message="java.home = ${java.home}"/>
<echo message="ant.home = ${ant.home}"/>
<echo message="jboss.home = ${jboss.home}"/>
<echo message="java.class.path = ${java.class.path}"/>
<echo message=""/>
</target>
<property name="jboss.lib" value="${jboss.home}/lib" />
<property name="jboss.client" value="${jboss.home}/client" />
<!-- Configuration used on JBoss 3 to run your server. There must be
a directory with the same name under "${jboss.home}/server" -->
<property name="jboss.configuration" value="default" />
<property name="jboss.deploy" value="${jboss.home}/server/${jboss.configuration}/deploy" />
<property name="src.dir" value="${basedir}/src"/>
<property name="src.main.dir" value="${src.dir}/main"/>
<property name="src.client.dir" value="${src.main.dir}/client"/>
<property name="src.ejb.dir" value="${src.main.dir}/ejb"/>
<property name="src.etc.dir" value="${src.dir}/etc"/>
<property name="src.resources" value="${src.dir}/resources"/>
<property name="resources" value="${basedir}/resources"/>
<property name="build.dir" value="${basedir}/build"/>
<property name="build.tmp.dir" value="${build.dir}/tmp"/>
<property name="build.deploy.dir" value="${build.dir}/deploy"/>
<property name="build.generate.dir" value="${build.dir}/generate"/>
<property name="build.classes.dir" value="${build.dir}/classes"/>
<property name="build.war.dir" value="${build.dir}/war"/>
<property name="build.client.dir" value="${build.dir}/client"/>
<property name="build.bin.dir" value="${build.dir}/bin"/>
<property name="build.javadocs.dir" value="${build.dir}/docs/api"/>
<path id="base.path">
<pathelement location="${jboss.client}/jboss-j2ee.jar" />
<pathelement location="${jboss.client}/jnp-client.jar" />
<pathelement location="${jboss.client}/jbossmq-client.jar" />
<pathelement location="${jboss.client}/jbosssx-client.jar" />
<pathelement location="${jboss.client}/concurrent.jar" />
<pathelement location="${jboss.client}/jaas.jar" />
<pathelement location="${jboss.lib}/jboss-jmx.jar" />
<pathelement location="${jboss.home}/server/${jboss.configuration}/lib/jbosssx.jar" />
<pathelement location="${jboss.home}/server/${jboss.configuration}/lib/mail.jar" />
<pathelement location="${build.classes.dir}" />
</path>
<!-- =================================================================== -->
<!-- Generates the necessary EJB classes and deployment descriptors -->
<!-- =================================================================== -->
<!-- =================================================================== -->
<!-- Compiles the source code -->
<!-- =================================================================== -->
<target name="compile" depends="init">
<mkdir dir="${build.classes.dir}"/>
<javac
srcdir="${src.ejb.dir}"
destdir="${build.classes.dir}"
debug="on"
deprecation="off"
optimize="on"
classpathref="base.path"
>
</javac>
<javac
srcdir="${src.client.dir}"
destdir="${build.classes.dir}"
debug="on"
deprecation="off"
optimize="on"
classpathref="base.path"
>
</javac>
</target>
<!-- =================================================================== -->
<!-- Creates the jar archives -->
<!-- =================================================================== -->
<target name="jar" depends="compile">
<mkdir dir="${build.deploy.dir}"/>
<mkdir dir="${build.bin.dir}"/>
<mkdir dir="${build.client.dir}"/>
<jar
jarfile="${build.deploy.dir}/ejb-test.jar"
>
<fileset
dir="${build.classes.dir}"
excludes="*Client.*"
>
</fileset>
<fileset
dir="${resources}/ejb-jar"
includes="META-INF/**"
>
</fileset>
</jar>
<jar
jarfile="${build.client.dir}/client-test.jar"
>
<fileset
dir="${build.classes.dir}"
excludes="*Bean.*"
>
</fileset>
</jar>
</target>
<!-- =================================================================== -->
<!-- Creates the client binary -->
<!-- =================================================================== -->
<target name="deploy-server" depends="jar">
<copy todir="${jboss.deploy}">
<fileset dir="${build.deploy.dir}" includes="*.jar,*.war,*.ear">
</fileset>
</copy>
</target>
<!-- =================================================================== -->
<!-- Creates the client binary -->
<!-- =================================================================== -->
<target name="create-client" depends="jar">
<!-- Convert the given paths to Windows -->
<pathconvert targetos="windows" property="jboss.home.on.windows" >
<path>
<pathelement location="${jboss.home}" />
</path>
</pathconvert>
<pathconvert targetos="windows" property="java.home.on.windows" >
<path>
<pathelement location="${java.home}" />
</path>
</pathconvert>
<filter token="jboss.home" value="${jboss.home.on.windows}"/>
<filter token="java.home" value="${java.home.on.windows}"/>
<copy todir="${build.bin.dir}" filtering="yes">
<fileset dir="${src.etc.dir}/bin" includes="run-*client.bat">
</fileset>
</copy>
<copy file="${src.etc.dir}/bin/lcp.bat" todir="${build.bin.dir}"/>
<copy file="${src.etc.dir}/jndi.properties" todir="${build.bin.dir}"/>
</target>
<!-- =================================================================== -->
<!-- Creates the binary structure -->
<!-- =================================================================== -->
<target name="main" depends="deploy-server,create-client">
</target>
<!-- =================================================================== -->
<!-- Cleans up the current build -->
<!-- =================================================================== -->
<target name="clean" depends="init">
<delete dir="${build.dir}"/>
</target>
</project>
jboss.xml
<?xml version="1.0" encoding="UTF-8"?>
<jboss>
<enterprise-beans>
<session>
<ejb-name>Hello</ejb-name>
<jndi-name>HelloHomeRemote</jndi-name>
</session>
</enterprise-beans>
</jboss>
ejb-jar.xml
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>Hello</ejb-name>
<home>HelloHome</home>
<remote>Hello</remote>
<ejb-class>HelloBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
.ant.properties
# ATTENTION: this is an example file how to overwrite settings in this project
# Please rename it to ".ant.properties" and adjust the settings to your needs
# Set the path to the runtime JBoss directory containing the JBoss application server
# ATTENTION: the one containing directories like "bin", "client", "server" etc.
jboss.home=f:/jboss
ant.home=f:/ant1.5.2
# Set the configuration name that must have a corresponding directory under
# <jboss.home>/server
jboss.configuration=default
目录结构:
resources\ejb-jar\META-INF下:
src\etc\bin下:
src\etc\WEB-INF下:
template下:
备注:1.如果要在.xml文件中加中文注释,把encoding=”GB2312”.
2.关于ant的用法可参看《Java深度历险》
3.关于.xml文件中属性的意义可参看:《MasteringEJB 2》
4. JBoss的模板http://sourceforge.net/project/showfiles.php?group_id=22866&release_id=111113
5.