EJB Core Module

Public Targets

TargetDescription
setupshow ant settings
gengenerate xdoclet ejb code
compilecompile source code, copy resources
distpackage distribution file
repoadd ejb to local Maven repository
cleandelete all non-source files
defaultcalls: clean, dist

Source: ejb.xml

				<?xml version="1.0" encoding="UTF-8"?>
<project name="ejb" default="default">
	<description>
  + ==\_/============J=A=V=A=G=E=N===A=N=T===M=O=D=U=L=E=S================= +
  +  \(_)/                                                                  +
  +  -(_)-                    EJB Core Module                               +
  +  /(_)\                                                                  +
  + ======================================================================= +
  +    Copyright (c) 2002-2005 Outsource Cafe, Inc.  All rights reserved.   +
  + ======================================================================= +
  +
  + Import this module for creating EJB jar distributions.
  + This file defines generic targets for xdoclet ejb code generation,
  + compilation, distribution creation, and clean up.
  + This file implements standard targets for module building.
  +
  + Targets: setup, gen, compile, dist, repo, clean
  +
  + Prerequisite imports:
  +   props-global.xml, classpath.xml, appserver-X.xml
  +
  + developer: RichardEasterling@OutsourceCafe.com
  + ======================================================================= +
  + Licensed 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.
  + =J=A=M===========================================J=A=V=A=G=E=N=.=C=O=M= +
	</description>
	<property name="EJB.PRESENT" value="true"></property>
	<!-- ===================================================================== -->
	<!-- public targets - override as needed -->
	<!-- ===================================================================== -->
	<target name="setup" depends="init, settings" description="show ant settings"></target>
	<target name="gen" depends="init, ejbdoclet" description="generate xdoclet ejb code"></target>
	<target name="compile" depends="gen, javac, resources" description="compile source code, copy resources"></target>
	<target name="dist" depends="compile, jar.ejb" description="package distribution file"></target>
	<target name="repo" depends="dist, ejb.install" description="add ejb to local Maven repository"></target>
	<target name="clean" depends="clean.build, clean.dist" description="delete all non-source files"></target>
	<target name="default" depends="clean, dist" description="calls: clean, dist"></target>
	<!-- ===================================================================== -->
	<!-- sanity checks -->
	<!-- ===================================================================== -->
	<fail unless="PROPS-GLOBAL.PRESENT" message="props-global.xml must be imported before ejb.xml in build file."></fail>
	<fail unless="CLASSPATH.PRESENT" message="classpath.xml must be imported before ejb.xml in build file.  Regeneration of classpath.xml required when upgrading to JAM 2.1. Type: maven jam"></fail>
	<fail unless="APPSERVER.PRESENT" message="appserver-X.xml (where X = jboss, weblogic, etc) must be imported before ejb.xml in build file."></fail>
	<available property="jdk1.3+" classname="java.lang.StrictMath"></available>
	<fail unless="jdk1.3+" message="Java versions prior to 1.3 not supported"></fail>
	<target name="check">
		<echo>DEPRICATED, no longer needed. All checks are now in-lined.</echo>
	</target>
	<!-- ===================================================================== -->
	<!-- local properties -->
	<!-- ===================================================================== -->
	<property name="maven.type" value="ejb"></property>
	<property name="maven.folder" value="${maven.groupId}/${maven.type}s"></property>
	<property name="dist.name" value="${module.name}-${module.version}.jar"></property>
	<property name="dist.file" location="${dist.dir}/${dist.name}"></property>
	<property name="pom.file.name" value="${module.name}-${module.version}.pom"></property>
	<property name="pom.file" value="${basedir}/project.xml"></property>
	<property name="ejb.table.create" value="true"></property>
	<property name="gen.ejb.uptodate.file" location="${xdoclet.build.dir}/ejb-uptodate.txt"></property>
	<!-- ===================================================================== -->
	<!-- jboss defaults -->
	<!-- ===================================================================== -->
	<property name="jboss.version" value="3.0"></property>
	<property name="jboss.type.mapping" value="${database.name}"></property>
	<property name="jboss.datasource.name" value="${datasource.name}"></property>
	<!-- ===================================================================== -->
	<!-- init -->
	<!-- ===================================================================== -->
	<target name="init" depends="">
		<mkdir dir="${build.classes.dir}"></mkdir>
		<mkdir dir="${src.java.dir}"></mkdir>
		<mkdir dir="${gen.java.dir}"></mkdir>
		<mkdir dir="${src.resources.dir}"></mkdir>
		<mkdir dir="${xdoclet.merge.dir}"></mkdir>
		<mkdir dir="${xdoclet.build.java.dir}"></mkdir>
		<taskdef name="ejbdoclet" classname="xdoclet.modules.ejb.EjbDocletTask" classpathref="xdoclet.classpath"></taskdef>
		<!--
		<taskdef name="ejbdoclet" classname="xdoclet.modules.ejb.EjbDocletTask">
			<classpath>
				<path refid="build.classpath"/>
				<pathelement location="${commons-logging.jar}"/>
				<pathelement location="${commons-collections.jar}"/>
				<pathelement location="${xjavadoc.jar}"/>
				<pathelement location="${maven.repo}/xdoclet/jars/xdoclet-1.2.jar"/>
				<pathelement location="${maven.repo}/xdoclet/jars/xdoclet-ejb-module-1.2.jar"/>
				<pathelement location="${maven.repo}/xdoclet/jars/xdoclet-jboss-module-1.2.jar"/>
				<pathelement location="${maven.repo}/xdoclet/jars/xdoclet-jmx-module-1.2.jar"/>
				<pathelement location="${maven.repo}/xdoclet/jars/xdoclet-web-module-1.2.jar"/>
				<pathelement location="${maven.repo}/xdoclet/jars/xdoclet-caucho-module-1.2.2.jar"/>
				<pathelement location="${maven.repo}/xdoclet/jars/xdoclet-bea-module-1.2.2.jar"/>
				<pathelement location="${maven.repo}/xdoclet/jars/xdoclet-ibm-module-1.2.2.jar"/>
			</classpath>
		</taskdef>
-->
		<tstamp>
			<format property="buildtime" pattern="yyyy-MM-dd&apos;T&apos;HH:mm:ss"></format>
		</tstamp>
		<echo file="${timestamp.path}" message="build.timestamp=${buildtime}"></echo>
	</target>
	<!-- ===================================================================== -->
	<!-- setup -->
	<!-- ===================================================================== -->
	<target name="settings" depends="">
		<echo>
+ ==\_/======J=A=V=A=G=E=N===A=N=T===M=O=D=U=L=E=S============= +
+  \(_)/                                                        +
+  -(_)-               EJB Build Settings                       +
+  /(_)\                                                        +
+ ============================================================= +
+
module.name          = ${module.name}
module.version       = ${module.version}
dist.name            = ${dist.name}
appserver.name       = ${appserver.name}
appserver.version    = ${appserver.version}
testtool.name        = ${testtool.name}
compiler.debug       = ${compiler.debug}
java.home            = ${java.home}
java.version         = ${ant.java.version}
ant.home             = ${ant.home}
ant.version          = ${ant.version}
maven.folder         = ${maven.folder}
maven.home           = ${maven.home}
maven.repo           = ${maven.repo}
jam.home             = ${jam.home}
appserver.deploy.dir = ${appserver.deploy.dir}
database.name        = ${database.name}
datasource.name      = ${datasource.name}
+
+ =J=A=M=================================J=A=V=A=G=E=N=.=C=O=M= +
		</echo>
	</target>
	<!-- =================================================================== -->
	<!-- uptodate compares java source to ${gen.ejb.uptodate.file} -->
	<!-- =================================================================== -->
	<target name="gen.uptodate" depends="init">
		<uptodate property="ejbdoclet.uptodate" targetfile="${gen.ejb.uptodate.file}">
			<!-- removed: triggers ejbdoclet every time if any files use Ant filters:
			<srcfiles dir="${xdoclet.merge.dir}"/>
			-->
			<srcfiles dir="${src.java.dir}"></srcfiles>
			<srcfiles dir="${gen.java.dir}"></srcfiles>
		</uptodate>
		<echo>ejbdoclet.uptodate = ${ejbdoclet.uptodate}</echo>
	</target>
	<!-- =================================================================== -->
	<!-- webdoclet.macro - is this more flexible? -->
	<!-- =================================================================== -->
	<macrodef name="ejbdoclet.macro">
		<attribute name="destdir" default="${xdoclet.build.java.dir}"></attribute>
		<attribute name="metainfdir" default="${xdoclet.build.metainf.dir}"></attribute>
		<attribute name="validatexml" default="${xdoclet.validatexml}"></attribute>
		<attribute name="excludedtags" default="${xdoclet.excludedtags}"></attribute>
		<attribute name="addedtags" default="@xdoclet-generated at ${TODAY},@copyright ${copyright},@author ${author},@version ${version}"></attribute>
		<attribute name="mergedir" default="${xdoclet.merge.dir}"></attribute>
		<attribute name="ejbspec" default="${ejb.spec.version}"></attribute>
		<attribute name="verbose" default="false"></attribute>
		<attribute name="force" default="true"></attribute>
		<attribute name="useIds" default="true"></attribute>
		<element name="fileset.tag" optional="no"></element>
		<element name="predd.tag" optional="yes"></element>
		<element name="postdd.tag" optional="yes"></element>
		<sequential>
			<mkdir dir="@{metainfdir}"></mkdir>
			<echo>EJBDOCLET-MACRO destdir =@{destdir}</echo>
			<echo>EJBDOCLET-MACRO ejbspec =@{ejbspec}</echo>
			<echo>EJBDOCLET-MACRO mergedir=@{mergedir}</echo>
			<ejbdoclet destdir="@{destdir}" ejbspec="@{ejbspec}" addedtags="@{addedtags}" verbose="@{verbose}" mergedir="@{mergedir}" excludedtags="@{excludedtags}" force="@{force}">
				<fileset.tag></fileset.tag>
				<predd.tag></predd.tag>
				<deploymentdescriptor useIds="@{useIds}" destdir="@{metainfdir}" validatexml="@{validatexml}"></deploymentdescriptor>
				<postdd.tag></postdd.tag>
			</ejbdoclet>
			<tstamp>
				<format property="gen_ejb_timestamp" pattern="yyyy-MM-dd&apos;T&apos;HH-mm-ss"></format>
			</tstamp>
			<echo file="${gen.ejb.uptodate.file}" message="gen.ejb.timestamp=${gen_ejb_timestamp}"></echo>
		</sequential>
	</macrodef>
	<!-- =================================================================== -->
	<!-- ejbdoclet targets for building EJBs -->
	<!-- =================================================================== -->
	<target name="ejbdoclet" unless="ejbdoclet.uptodate" depends="gen.uptodate">
		<ejbdoclet.macro>
			<fileset.tag>
				<fileset dir="${src.java.dir}">
					<include name="**/*${xdoclet.ejb.suffix}.java"></include>
				</fileset>
				<fileset dir="${gen.java.dir}">
					<include name="**/*${xdoclet.ejb.suffix}.java"></include>
				</fileset>
			</fileset.tag>
			<predd.tag>
				<entitycmp></entitycmp>
				<packageSubstitution packages="stateless" substituteWith="interfaces"></packageSubstitution>
				<remoteinterface></remoteinterface>
				<localinterface></localinterface>
				<homeinterface></homeinterface>
				<utilobject kind="${xdoclet.jndi.kind}" cacheHomes="${xdoclet.ejb.cache.homes}" includeGUID="${xdoclet.ejb.include.guid}"></utilobject>
				<localhomeinterface></localhomeinterface>
				<session></session>
			</predd.tag>
			<postdd.tag>
				<jboss version="${jboss.version}" xmlencoding="${xdoclet.xmlencoding}" typemapping="${jboss.type.mapping}" datasource="${jboss.datasource.name}" destdir="${xdoclet.build.metainf.dir}" validateXml="${xdoclet.validatexml}"></jboss>
				<!--
				<resin-ejb-xml generateSourceComments="true" validateXML="${xdoclet.validatexml}" acceptAbstractClasses="true" acceptInterfaces="false" destDir="${xdoclet.build.metainf.dir}"/>
				<websphere useIds="true" destdir="${xdoclet.build.metainf.dir}" mergedir="${xdoclet.merge.dir}" validateXml="${xdoclet.validatexml}"/>
				<weblogic destdir="${xdoclet.build.metainf.dir}" version="7.0" validateDbSchemaWith="MetaData" mergedir="${xdoclet.merge.dir}" validateXml="${xdoclet.validatexml}"/>
				-->
			</postdd.tag>
		</ejbdoclet.macro>
	</target>
	<!-- =================================================================== -->
	<!-- DEPRICATED DEPRICATED: use ejbdoclet instead DEPRICATED DEPRICATED  -->
	<!-- Generates the supporing EJB classes and deployment descriptors      -->
	<!-- =================================================================== -->
	<target name="gen.ejb" depends="ejbdoclet">
		<echo>DEPRICATED, use 'ejbdoclet' instead.</echo>
	</target>
	<!-- =================================================================== -->
	<!-- compiles the source code and copy resources conditionaly            -->
	<!-- =================================================================== -->
	<target name="javac">
		<javac destdir="${build.classes.dir}" source="${compiler.source}" target="${compiler.target}" classpathref="build.classpath" debug="${compiler.debug}" deprecation="${compiler.deprecation}" optimize="${compiler.optimize}" compiler="${compiler.type}" excludes="${compiler.excludes}">
			<src path="${xdoclet.build.java.dir}"></src>
			<src path="${src.java.dir}"></src>
			<src path="${gen.java.dir}"></src>
			<patternset refid="source.modifications.patternset"></patternset>
		</javac>
	</target>
	<!-- =================================================================== -->
	<!-- 'resources' target - copy resources to target/classpath             -->
	<!-- =================================================================== -->
	<!-- the 'resources' target, found in classpath.xml, is generated from the POM.
	     The default project.xml entry for EJBs is:
	<build>
		<sourceDirectory>src/java</sourceDirectory>
		<integrationUnitTestSourceDirectory>src/test-cactus</integrationUnitTestSourceDirectory>
		<resources>
			<resource>
				<directory>src/resources</directory>
			</resource>
			<resource>
				<directory>src/java</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
			<resource>
				<directory>src-gen/resources</directory>
			</resource>
			<resource>
				<directory>src-gen/java</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
			<resource>
				<directory>target/xdoclet/resources</directory>
			</resource>
			<resource>
				<directory>target/xdoclet/java</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
			<resource>
				<directory>target/xdoclet</directory>
				<includes>
					<include>META-INF/*</include>
				</includes>
			</resource>
		</resources>
	</build>
	-->
	<!-- =================================================================== -->
	<!-- creates ejb jar archive -->
	<!-- =================================================================== -->
	<target name="jar.ejb" depends="">
		<delete file="{dist.file}" failonerror="false"></delete>
		<mkdir dir="${dist.dir}"></mkdir>
		<jar jarfile="${dist.file}">
			<fileset dir="${build.classes.dir}" includes="**"></fileset>
		</jar>
	</target>
	<!-- =================================================================== -->
	<!-- Clean targets -->
	<!-- =================================================================== -->
	<target name="clean.build" depends="">
		<delete dir="${build.dir}"></delete>
	</target>
	<target name="clean.dist" depends="">
		<delete dir="${dist.dir}"></delete>
	</target>
	<!-- =================================================================== -->
	<!-- installs ejb jar in Maven repository -->
	<!-- =================================================================== -->
	<target name="ejb.install" depends="">
		<mkdir dir="${maven.repo}/${maven.folder}"></mkdir>
		<copy file="${dist.file}" todir="${maven.repo}/${maven.folder}"></copy>
		<checksum fileext=".md5" file="${maven.repo}/${maven.folder}/${dist.name}" forceoverwrite="true"></checksum>
		<mkdir dir="${maven.repo}/${maven.groupId}/poms"></mkdir>
		<copy file="${pom.file}" tofile="${maven.repo}/${maven.groupId}/poms/${pom.file.name}"></copy>
	</target>
</project>