程序中使用ANT

最近的一个兼职项目中涉及到了J2ME,需要在程序中使用ANT打包手机驱动、图片等下载资源;这是一个主要程序的备份:

package lesvos_package;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DefaultLogger;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;

import eu.eodigos.hibernate.bean.Content;
import eu.eodigos.hibernate.server.AccessDBServer;
import eu.eodigos.hibernate.server.AccessDBServerImp;

public class AntUtil
{

AccessDBServer access = new AccessDBServerImp();

String email = "";

String language = "";

String phoneid = "";

String phonename = "";

String subphonename = "";

String dimage = "";

String dmap = "";

String dvideoOraudio = "";

String xmlfilename = "";

String screensize = "";

String screenfolder = "";

String devicename = "";

List contidlist = new ArrayList();

public AntUtil(String email, String language, String phoneid, String phonename, String subphonename, String dimage,
String dmap, String dvideoOraudio)
{
try
{
this.email = email;
this.language = language;
this.phoneid = phoneid;
this.phonename = phonename;
this.subphonename = subphonename;
this.dimage = dimage;
this.dmap = dmap;
this.dvideoOraudio = dvideoOraudio;
} catch (Exception e)
{
e.printStackTrace();
}
}

public void doResourceCopy()
{
screensize = access.getScreenFlagByPhoneid(phoneid);
devicename = access.getJ2meNameByPhoneid(phoneid);
if (screensize.equals("A"))
{
screenfolder = "FullCanvas.128+x160";
} else if (screensize.equals("B"))
{
screenfolder = "FullCanvas.176x220";
} else if (screensize.equals("C"))
{
screenfolder = "FullCanvas.240x320";
}
contidlist = access.getMunicipalDate(email);

// System.out.println(System.getProperty("user.dir"));

File buildFile = new File(FileConf.copyBuildingpath);

Project p = new Project();
DefaultLogger consoleLogger = new DefaultLogger();
consoleLogger.setErrorPrintStream(System.err);
consoleLogger.setOutputPrintStream(System.out);
consoleLogger.setMessageOutputLevel(Project.MSG_INFO);

p.addBuildListener(consoleLogger);
try
{
p.fireBuildStarted();
p.init();
ProjectHelper helper = ProjectHelper.getProjectHelper();
helper.parse(p, buildFile);

// set the path of resource
p.setProperty("toresource.dir", FileConf.resourceTopath);
p.setProperty("fromresource.dir", FileConf.rescourceFrompath);
// p.setProperty("jar.dir", FileConf.rescourceFrompath + "/dist/");

// if the resourceTopath directory is not exsit,then do not run
// deldir target
File resourcetofile = new File(FileConf.resourceTopath);
if (resourcetofile.exists())
{
// resourcetofile.mkdir();
p.executeTarget("deldir");
}

p.setProperty("screenfolder", screenfolder);
p.executeTarget("makefolder");

if (this.dvideoOraudio.equals("1"))
{
p.setProperty("dvideoOraudio", "video");
p.executeTarget("makeOrfolder");
} else if (this.dvideoOraudio.equals("2"))
{
p.setProperty("dvideoOraudio", "audio");
p.executeTarget("makeOrfolder");
}

p.executeTarget("docopyscreen");
p.executeTarget("docopyxml");
if (contidlist != null)
{
String contid = "";
Content content = new Content();
for (Iterator iter = contidlist.iterator(); iter.hasNext();)
{
content = (Content) iter.next();
contid = content.getContId().toString();
p.setProperty("cont_id", contid);
p.setProperty("screensize", screensize);
if (this.dimage.equals("1"))
{
p.executeTarget("docopyimages");
}
if (this.dvideoOraudio.equals("1"))
{
p.executeTarget("docopyvideo");
} else if (this.dvideoOraudio.equals("2"))
{
p.executeTarget("docopyaudio");
}
}
}
// judge the files
if (this.dvideoOraudio.equals("1"))
{
if (judgeVideoOrAudioFolder("video"))
p.executeTarget("docopynovideo");
} else if (this.dvideoOraudio.equals("2"))
{
if (judgeVideoOrAudioFolder("audio"))
p.executeTarget("docopynoaudio");
}

p.setProperty("devicename", devicename);
// p.executeTarget("doresourcejar");

p.fireBuildFinished(null);
} catch (BuildException e)
{
p.fireBuildFinished(e);
}
}

/**
* according to the dvideoOraudio value to judge this folder is null or not
*/
public boolean judgeVideoOrAudioFolder(String folder)
{
File f = new File(FileConf.resourceTopath + "/" + folder);
// System.out.println(System.getProperty("user.dir") +
// "/webapps/ROOT/resource/" + folder);
File[] files = f.listFiles();
if (f.isDirectory())
{
// It's a directory
if (files.length == 0)
{
// no files
return true;
} else
{
// have files
return false;
}
}
return false;
}

public void doJ2meBuild()
{
// -Dvideo=true -Daudio=true -Dshowmap=true -Dlocalization=el
// -Ddevice=Sony-Ericsson/W900
devicename = access.getJ2meNameByPhoneid(phoneid);
File j2mebuildFile = new File(FileConf.j2meBuildingpath);

Project j2mep = new Project();
DefaultLogger consoleLogger = new DefaultLogger();
consoleLogger.setErrorPrintStream(System.err);
consoleLogger.setOutputPrintStream(System.out);
consoleLogger.setMessageOutputLevel(Project.MSG_INFO);

j2mep.addBuildListener(consoleLogger);
try
{
j2mep.fireBuildStarted();
j2mep.init();
ProjectHelper helper = ProjectHelper.getProjectHelper();
helper.parse(j2mep, j2mebuildFile);
// set the para video and audio
if (this.dvideoOraudio.equals("1"))
{
j2mep.setProperty("video", "true");
j2mep.setProperty("audio", "false");
} else if (this.dvideoOraudio.equals("2"))
{
j2mep.setProperty("video", "false");
j2mep.setProperty("audio", "true");
} else if (this.dvideoOraudio.equals("2"))
{
j2mep.setProperty("video", "false");
j2mep.setProperty("audio", "false");
}
// set the para showmap
if (this.dmap.equals("1"))
{
j2mep.setProperty("showmap", "true");
} else if (this.dmap.equals("0"))
{
j2mep.setProperty("showmap", "false");
}

// set the para localization
if (this.language.equals("en_US"))
{
j2mep.setProperty("localization", "en_US");
devicename = devicename + "-en_US-mymytilene";
} else
{
j2mep.setProperty("localization", "el");
devicename = devicename + "-en_GR-mymytilene";
}

// set the name of device
j2mep.setProperty("device", devicename);
// run the j2me build
j2mep.executeTarget("cleanbuild");

// copy the jar file to server root in order to download from page
j2mep.setProperty("jartopath.dir", FileConf.jarToPath);
j2mep.setProperty("jarfrompath.dir", FileConf.jarFromPath);
j2mep.executeTarget("docopyjar");
j2mep.fireBuildFinished(null);
} catch (Exception e)
{
e.printStackTrace();
}
}

public static void main(String[] args)
{
AntUtil antutil = new AntUtil("jia_daoger@tom.com", "en_US", "101", "1", "1", "1", "1", "1");
antutil.doResourceCopy();
}
}



这是要执行的build文件:

<project name="testproject" default="makefolder" basedir=".">
<property name="toresource.dir" value="" />
<property name="fromresource.dir" value="" />
<!--property name="jar.dir" value="" /-->

<target name="deldir">
<delete includeEmptyDirs="true">
<fileset dir="${toresource.dir}/" />
</delete>
<!--delete>
<fileset dir="${jar.dir}/" />
</delete-->
</target>

<target name="makefolder">
<mkdir dir="${toresource.dir}" />
<mkdir dir="${toresource.dir}/${screenfolder}" />
<!--mkdir dir="${jar.dir}/" /-->
</target>

<target name="makeOrfolder">
<mkdir dir="${toresource.dir}/${dvideoOraudio}" />
</target>

<target name="docopyscreen">
<copy todir="${toresource.dir}/${screenfolder}">
<fileset dir="${fromresource.dir}/${screenfolder}">
<include name="*.*" />
</fileset>
</copy>
</target>

<target name="docopyxml">
<copy todir="${toresource.dir}/${screenfolder}">
<fileset dir="${fromresource.dir}/xml">
<include name="*.xml" />
</fileset>
</copy>
<delete>
<fileset dir="${fromresource.dir}/xml/" />
</delete>
</target>

<target name="docopyimages">
<copy todir="${toresource.dir}/${screenfolder}">
<fileset dir="${fromresource.dir}/images/pics">
<include name="${cont_id}/${cont_id}${screensize}.png" />
</fileset>
</copy>
</target>

<target name="docopyvideo">
<copy todir="${toresource.dir}/video">
<fileset dir="${fromresource.dir}/video">
<include name="${cont_id}/${cont_id}.3gp" />
</fileset>
</copy>
</target>

<target name="docopyaudio">
<copy todir="${toresource.dir}/audio">
<fileset dir="${fromresource.dir}/audio">
<include name="${cont_id}/${cont_id}.mp3" />
</fileset>
</copy>
</target>

<target name="docopynovideo">
<copy todir="${toresource.dir}/video">
<fileset dir="${fromresource.dir}/video">
<include name="novideo.3gp" />
</fileset>
</copy>
</target>

<target name="docopynoaudio">
<copy todir="${toresource.dir}/audio">
<fileset dir="${fromresource.dir}/audio">
<include name="noaudio.mp3" />
</fileset>
</copy>
</target>

<!--target name="doresourcejar">
<jar jarfile="${jar.dir}/${devicename}.jar">
<fileset dir="${toresource.dir}">
<include name="**/*.*" />
</fileset>
</jar>
</target-->
</project>


用于j2me的build.xml:


<project name="Mytilene" default="j2mepolish">
<property file="mytilene.properties" />
<taskdef name="j2mepolish" classname="de.enough.polish.ant.PolishTask" classpath="${polish.home}/lib/enough-j2mepolish-build.jar;${polish.home}/lib/jdom.jar" />

<!-- build targets, each target can be called via "ant [name]",
e.g. "ant clean", "ant test j2mepolish" or just "ant" for calling the default-target -->

<target name="setdeploy" description="Call this target first to set the OTA download-URL, e.g. ant setdeploy j2mepolish">
<property name="deploy-url" value="http://www.company.com/download/" />
</target>

<target name="enableDebug" description="Call this target first to skip the obfuscation step, call the emulator and start the debugger, e.g. ant enableDebug j2mepolish">
<property name="debug" value="true" />
</target>


<target name="test" description="Call this target first to skip the obfuscation step and call the emulator, e.g. ant test j2mepolish">
<property name="test" value="true" />
<property name="dir.work" value="build/test" />
</target>

<target name="init">
<property name="test" value="false" />
<property name="dir.work" value="build/real" />
<property name="deploy-url" value="" />
<property name="resource.dir" value="resources" />
</target>


<!-- start the build with J2ME Polish -->
<target name="j2mepolish">
<j2mepolish>
<info name="${app.name}" vendorName="${app.vendorName}" version="${app.version}" description="${app.description}" jarName="${polish.vendor}-${polish.name}-${polish.locale}-mymytilene.jar" jarUrl="${polish.jarName}" infoUrl="${app.infourl}" icon="${app.icon}" copyright="${app.copyright}" />
<deviceRequirements if="test">
<requirement name="Identifier" value="${device}" />
</deviceRequirements>
<deviceRequirements unless="test">
<requirement name="Identifier" value="${device}" />
</deviceRequirements>
<build usePolishGui="True" fullscreen="menu">
<midlet class="${app.mainClass}" />
<libraries>
<library file="lib/kxml.zip" />
</libraries>
<variables includeAntProperties="true">
<variable name="polish.MenuBar.useExtendedMenuBar" value="true" />
<variable name="polish.useScrollBar" value="true" />
</variables>
<resources dir="resources" defaultexcludes="yes" excludes="readme.txt, *.definition">
<fileset dir="resources/video" includes="*.3gp" if="${video}" />
<fileset dir="resources/audio" includes="*.mp3" if="${audio}" />
<fileset dir="resources/map" includes="*.png" if="${showmap}" />
<localization>
<locale name="${localization}" encoding="utf-8" unless="test" />
</localization>
</resources>
<obfuscator name="ProGuard">
<keep class="${app.mainClass}" />
<parameter name="optimize" value="false" />
</obfuscator>
<packager name="7zip">
<parameter name="compression" value="maximum" />
<parameter name="passes" value="4" />
<parameter name="fastbytes" value="212" />
</packager>
</build>
<!--<emulator /> -->
</j2mepolish>
</target>

<target name="clean" description="allows a clean build. You should call [ant clean] whenever you made changes to devices.xml, vendors.xml or groups.xml">
<delete dir="build" />
<delete dir="dist" includes="**/*" />
</target>

<target name="cleanbuild" description="allows a clean build. You should call [ant cleanbuild] whenever you made changes to devices.xml, vendors.xml or groups.xml" depends="clean, j2mepolish" />

<target name="debug" description="debugs the project" depends="enableDebug, test, j2mepolish" />

<!-- add by jia-->
<target name="docopyjar" description="copy the j2me jar to server root dictory ">
<copy todir="${jartopath.dir}">
<fileset dir="${jarfrompath.dir}">
<include name="*.jar" />
</fileset>
</copy>
</target>

</project>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值