If you prefer not to use JAM, JavaGen can be invoked from your own Ant build file.
To get JavaGen working from Ant follow these steps:
build.xml file.<property name="src.model.dir" location="${basedir}/src/uml"/>
<property name="model.path" location="${src.model.dir}/javagen-autopk-ejb.zuml!/*.xmi"/>libs directory by typing:
ant copy.libs
ant javagen.props
not implemented yetor a list of properties, both of which indicate successful communication with the web service.
code generation switches section reflect your wishes.ant javagen
<?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>