Ant Setup

If you prefer not to use JAM, JavaGen can be invoked from your own Ant build file.

Ant Setup Using the Template

To get JavaGen working from Ant follow these steps:

  1. Copy the following Ant script to your project and place it in your existing or new build.xml file.
  2. Set the following properties to reflect the location of your UML model in your build environment:
    <property name="src.model.dir" location="${basedir}/src/uml"/>
    <property name="model.path" location="${src.model.dir}/javagen-autopk-ejb.zuml!/*.xmi"/>
  3. Download the JavaGen libraries to your libs directory by typing:
    ant copy.libs
  4. Test the JavaGen web service by getting a properties listing by typing:
    ant javagen.props
    Note: You may get back not implemented yet or a list of properties, both of which indicate successful communication with the web service.
  5. Confirm that the properties in the code generation switches section reflect your wishes.
  6. Finally run the code generator by typing:
    ant javagen

Ant Build Template

<?xml version="1.0"?>
<project name="javagen">
	<description>
  + ==\_/========J=A=V=A=G=E=N===C=O=D=E==G=E=N=E=R=A=T=O=R================ +
  +  \(_)/                                                                  +
  +  -(_)-         JavaGen Code Generator Web Service Module                +
  +  /(_)\                                                                  +
  + ======================================================================= +
  +    Copyright (c) 2002-2005 Outsource Cafe, Inc.  All rights reserved.   +
  + ======================================================================= +
  +
  + Invokes JavaGen code generator web service, passing UML/XMI file and 
  + properties controlling what is generated.  
  +
  + Additional targets are defined for listing available code generator 
  + properties, checking JavaGen account status and for removing generated 
  + code.
  +
  + Targets: 
  +          javagen - generate code from UML/XMI file.
  +        clean.gen - move src-gen to src-gen-old directory or
  +                    or delete src-gen if delete.src-gen.on=true.
  +    javagen.props - list javagen-specific properties
  +  javagen.account - show JavaGen account status
  +
  + Properties:
  +     project.name - project id
  +       model.path - path to the xmi file.  Can include entries within a
  +                    zip file using the '!' character to seperate the file
  +                    from the entries.  For example:
  +                    /project/src/uml/uml.zuml!/entry.xmi
  +    src.model.dir - should point to the UML directory.  Default: src/uml.
  +
  + Supported Case/UML Tools:
  +   Poseidon 1.6, 2.x, 3.x
  +
  + 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>
	<!-- =================================================================== -->
	<!-- build properties -->
	<!-- =================================================================== -->
	<property name="libs.dir" location="${basedir}/libs"/>
	<property name="gen.dir" location="${basedir}/src-gen"/>
	<property name="gen.timestamp.file" location="${gen.dir}/timestamp.txt"/>
	<property name="src.model.dir" location="${basedir}/src/uml"/>
	<property name="project.name" value="javagen-autopk-ejb"/>
	<property name="model.path" location="${src.model.dir}/${project.name}.zuml!/*.xmi"/>
	<!-- ===================================================================== -->
	<!-- code generation switches -->
	<!-- ===================================================================== -->
	<property name="javagen.ejb.flag" value="true"/>
	<property name="javagen.sql.flag" value="true"/>
	<property name="javagen.unittest.flag" value="true"/>
	<!--
	<property name="javagen.struts.flag" value="true"/>
	<property name="javagen.struts.no-form.flag" value="true"/>
	<property name="javagen.struts.no-session.flag" value="true"/>
	<property name="javagen.struts.no-jsp.flag" value="true"/>
	<property name="javagen.struts.no-action.flag" value="true"/>
	-->
	<!-- comma delineated list of target application servers: 
	jboss3, jboss4, resin2, resin3, weblogic8, websphere, oracle9
	-->
	<property name="javagen.servers" value="jboss3"/>
	<!-- supported databases for javagen.database property: 
	   mckoi,interbase,db2,oracle9i,oracle8,oracle7,sybase,postgre-sql,
		postgre-sql-7.2,hypersonic-sql,pointbase,solid,mysql,ms-sqlserver,
		ms-sqlserver2000,db2-400,sapdb,cloudscape,informixdb
	<property name="javagen.database" value="hypersonic-sql"/>
	-->
	<!-- =================================================================== -->
	<!-- javagen properties -->
	<!-- =================================================================== -->
	<property name="javagen.account" value="guest"/>
	<property name="javagen.username" value="anonymous"/>
	<property name="javagen.password" value="anonymous"/>
	<property name="javagen.config" value=""/>
	<property name="javagen.url" value="http://www.javagen.org/javagen-ws/services/JavaGenWS"/>
	<!-- set javagen.project to project.name if its defined -->
	<condition property="javagen.project" value="${project.name}">
		<isset property="project.name"/>
	</condition>
	<property name="javagen.properties" value="model.name,database.name,datasource.name,xdoclet.ejb.suffix,xdoclet.dto.suffix,xdoclet.webservice.suffix,appserver.name,appserver.version"/>
	<property name="javagen.remove.duplicate.source" value="true"/>
	<property name="javagen.delete.old.source" value="false"/>
	<!-- =================================================================== -->
	<!-- sanity check -->
	<!-- =================================================================== -->
	<condition property="src.model.dir.PRESENT">
		<available file="${src.model.dir}"/>
	</condition>
	<fail unless="src.model.dir.PRESENT"> 'src.model.dir' property not set: </fail>
	<condition property="model.path.PRESENT">
		<isset property="model.path"/>
	</condition>
	<fail unless="model.path.PRESENT">'model.path' property not set (exampe: src/uml/model.zuml!/model.xmi) </fail>
	<!-- =================================================================== -->
	<!-- generate code - call web service -->
	<!-- =================================================================== -->
	<target name="javagen" description="generate code from UML/XMI file">
		<taskdef name="javagen" classname="com.javagen.codegen.client.ant.JavaGenWSTask" classpathref="javagenws.classpath"/>
		<echo>username     = ${javagen.username}</echo>
		<echo>account      = ${javagen.account}</echo>
		<echo>modelfile    = ${model.path}</echo>
		<echo>project      = ${javagen.project}</echo>
		<echo>wsaddress    = ${javagen.url}</echo>
		<echo>properties   = ${javagen.properties}</echo>
		<echo>Calling web service...</echo>
		<javagen modelfile="${model.path}" deleteOldSource="${javagen.delete.old.source}" removeDuplicateSource="${javagen.remove.duplicate.source}" srcGenFolder="${gen.src.folder}" srcFolder="${src.folder}" username="${javagen.username}" password="${javagen.password}" account="${javagen.account}" projectname="${javagen.project}" propertylist="${javagen.properties}" srcZipFileProperty="javagen.src.zip.file" timestampFile="${gen.timestamp.file}" url="${javagen.url}"/>
		<echo>RESULT: javagen.src.zip.file = ${javagen.src.zip.file}</echo>
	</target>
	<!-- =================================================================== -->
	<!-- list javagen-specific properties - call web service -->
	<!-- =================================================================== -->
	<target name="javagen.props" description="list JavaGen-specific properties">
		<taskdef name="javagen-properties" classname="com.javagen.codegen.client.ant.JavaGenPropertiesWSTask" classpathref="javagenws.classpath"/>
		<echo>username     = ${javagen.username}</echo>
		<echo>account      = ${javagen.account}</echo>
		<echo>project      = ${javagen.project}</echo>
		<echo>wsaddress    = ${javagen.url}</echo>
		<echo>Calling web service...</echo>
		<javagen-properties username="${javagen.username}" password="${javagen.password}" account="${javagen.account}" projectname="${javagen.project}" url="${javagen.url}" propertylist=""/>
	</target>
	<!-- =================================================================== -->
	<!-- force code generation by deleting timestamp. Play it safe by not -->
	<!-- deleting actual files, source is retained even if web service fails. -->
	<!-- =================================================================== -->
	<target name="javagen.clean" description="delete/archive src-gen directory">
		<delete file="${gen.timestamp.file}" failonerror="false"/>
	</target>
	<!-- ===================================================================== -->
	<!-- JavaGen web service classpath -->
	<!-- ===================================================================== -->
	<path id="javagenws.classpath">
		<pathelement path="${java.class.path}"/>
		<fileset dir="${basedir}">
			<include name="libs/*.jar"/>
		</fileset>
	</path>
	<!-- ===================================================================== -->
	<!-- taskdefs -->
	<!-- ===================================================================== -->
	<!-- =================================================================== -->
	<!-- download libraries required for JavaGen and place in lib dirctory -->
	<!-- =================================================================== -->
	<target name="get.libs" description="download libraries required for JavaGen">
		<mkdir dir="${libs.dir}"/>
		<get dest="${libs.dir}/axis-close-socket-patch-1.1.1.jar" usetimestamp="true" ignoreerrors="true" src="http://www.javagen.org/maven/axis/jars/axis-close-socket-patch-1.1.1.jar"/>
		<get dest="${libs.dir}/javagen-ws-client-1.3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.javagen.org/maven/javagen-com/jars/javagen-ws-client-1.3.jar"/>
		<get dest="${libs.dir}/axis-jaxrpc-1.2-RC2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/axis/jars/axis-jaxrpc-1.2-RC2.jar"/>
		<get dest="${libs.dir}/axis-saaj-1.2-RC2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/axis/jars/axis-saaj-1.2-RC2.jar"/>
		<get dest="${libs.dir}/axis-wsdl4j-1.2-RC2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/axis/jars/axis-wsdl4j-1.2-RC2.jar"/>
		<get dest="${libs.dir}/commons-discovery-0.2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-discovery/jars/commons-discovery-0.2.jar"/>
		<get dest="${libs.dir}/log4j-1.2.8.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/log4j/jars/log4j-1.2.8.jar"/>
		<get dest="${libs.dir}/commons-logging-1.0.4.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/commons-logging/jars/commons-logging-1.0.4.jar"/>
		<!--
		<get dest="${libs.dir}/activation-1.0.2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/activation/jars/activation-1.0.2.jar"/>
		<get dest="${libs.dir}/javamail-1.3.2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/javamail/jars/javamail-1.3.2.jar"/>
		<get dest="${libs.dir}/geronimo-spec-activation-1.0.2.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/geronimo-spec/jars/geronimo-spec-activation-1.0.2-rc3.jar"/>
		<get dest="${libs.dir}/geronimo-spec-javamail-1.3.1-rc3.jar" usetimestamp="true" ignoreerrors="true" src="http://www.ibiblio.org/maven/geronimo-spec/jars/geronimo-spec-javamail-1.3.1-rc3.jar"/>
		-->
		<echo/>
		<echo> = = = = = = MANUALL DOWNLOAD REQUIRED = = = = = = </echo>
		<echo>You must obtain the activation.jar and javamail.jar manually from:</echo>
		<echo>  http://java.sun.com/products/javabeans/glasgow/jaf.html</echo>
		<echo>  http://java.sun.com/products/javamail/downloads/index.html</echo>
	</target>
</project>