Now I am going to share the gant script of building J2ME app, this is just basic, but you can see the power of Gant.
Requirement:
1. You need to install Groovy and Gant, here is the link, I used 1.9.3 in Mac.
2. download the latest version of antenna, here is the download link, I used 1.2.1-beta.
3. install the JavaME SDK, I choose JavaME SDK 3, since it works on Mac.
The J2ME MIDlet class source code:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HelloWorld extends MIDlet implements CommandListener {
private final Command exitCommand;
private final Form form;
public HelloWorld() {
exitCommand = new Command("Exit", Command.EXIT, 1);
form = new Form("Hello World!");
form.append("from Steve");
form.addCommand(exitCommand);
form.setCommandListener(this);
}
protected void startApp() {
Display.getDisplay(this).setCurrent(form);
}
protected void pauseApp() {}
protected void destroyApp(boolean force) {}
public void commandAction(Command cmd, Displayable disp) {
if (cmd == exitCommand) {
destroyApp(false);
notifyDestroyed();
}
}
}
The Ant script looks like:<project name="antenna-test" default="jar" basedir="."> <taskdef resource="antenna.properties" classpath="./antenna-bin-1.2.1-beta.jar" /> <property name="wtk.home" value="/Users/Steve/dev/wtk252" /> <property name="wtk.midp.version" value="2.0" /> <property name="wtk.cldc.version" value="1.1" /> <property name="src.dir" location="src" /> <property name="out.dir" location="out" /> <property name="dist.dir" location="dist" /> <property name="preverified.dir" location="preverified" /> <!-- Regular targets --> <target name="clean" description="cleans the target directory"> <delete dir="${out.dir}"/> <delete dir="${dist.dir}"/> <delete dir="${preverified.dir}"/> </target> <target name="compile" depends="init"> <wtkbuild source="1.3" srcdir="${src.dir}" destdir="${out.dir}"> </wtkbuild> </target> <target name="preverify" depends="compile"> <wtkpreverify srcdir="${out.dir}" destdir="${preverified.dir}"> </wtkpreverify> </target> <target name="jar" depends="compile,jad,preverify"> <wtkpackage jarfile="${dist.dir}/helloworld.jar" jadfile="${dist.dir}/helloworld.jad" obfuscate="false" preverify="false"> <fileset dir="${out.dir}"/> </wtkpackage> </target> <target name="jad" depends="compile"> <wtkjad version="0.01" name="hello" vendor="foo" jadfile="${dist.dir}/helloworld.jad" jarfile="${dist.dir}/helloworld.jar"> <midlet name="hello" class="HelloWorld"> </midlet> </wtkjad> </target> <target name="init" description="initialization for properties and paths" depends="clean"> <buildnumber/> <mkdir dir="${out.dir}"/> <mkdir dir="${dist.dir}"/> <mkdir dir="${preverified.dir}" /> </target> </project>
the build script build.gant:
ant.taskdef(resource:"antenna.properties", classpath:"./antenna-bin-1.2.1-beta.jar")
ant.property(name:"wtk.home", value:"/Applications/Java_ME_SDK_3.0.app/Contents/Resources")
ant.property(name:"wtk.midp.version", value:"2.0")
ant.property(name:"wtk.cldc.version", value:"1.1")
final srcDir = "src"
final outDir = 'out'
final distDir = 'dist'
final preverifiedDir = 'preverified'
//clean target
includeTargets << gant.targets.Clean
cleanPattern << '**/*~'
cleanDirectory << [ outDir, distDir, preverifiedDir]
target(name:"init", description:"initialization") {
depends(clean)
/*buildnumber() */
mkdir(dir:outDir)
mkdir(dir:distDir)
mkdir(dir:preverifiedDir)
}
target(name:"compile", description:"compile") {
depends(init)
wtkbuild( source:"1.3", srcdir:srcDir, destdir:outDir)
}
target(name:"preverify", description:"preverify") {
depends(compile)
wtkpreverify(srcdir:outDir, destdir:preverifiedDir)
}
//target jad file
target(name:"jad", description:"generate jad file") {
depends(compile)
wtkjad( version:"0.01", name:'hello', vendor:"foo", jadfile:"${distDir}/helloworld.jad", jarfile:"${distDir}/helloworld.jar" ) {
midlet(name:"hello", class:"HelloWorld")
}
}
//target jar
target(name:"jar", description:"generating jar file") {
depends(compile,jad)
wtkpackage( jadfile:"${distDir}/helloworld.jad", jarfile:"${distDir}/helloworld.jar", obfuscate:"false", preverify:"false") {
fileset(dir:outDir)
}
}
//target obfuscate
//target all
target(name:"all", description: "build the whole app") {
depends(jar)
}
setDefaultTarget(all)
From the above script, you can see how easy to write gant build script.
This is only the basic implementation, I am going to post more Gant based script in future.
In future I am going to consider:
1. How to integrate with ANT script;
2. How import multiple Gant script file.
No comments:
Post a Comment