- 浏览: 531753 次
- 性别:
- 来自: 山东济南
文章分类
最新评论
-
dragon_8844:
非常不错,nice
java.util.concurrent 多线程框架 -
wusendong:
很好的文章!受益匪浅,谢谢!
java.util.concurrent 多线程框架 -
SINCE1978:
你也关注并发啊
java.util.concurrent 多线程框架 -
lku1314:
这个不错 刚刚找到这个组建 以前孤陋寡闻了 像lz学习!标 ...
quartz 在WEB中应用小结 -
lliiqiang:
人们对于目标需要的需求明确的去做,对于目标以外的因素是随机的执 ...
flex和后端的数据交互(一)--XML和HTTPService
最近的一个兼职项目中涉及到了J2ME,需要在程序中使用ANT打包手机驱动、图片等下载资源;这是一个主要程序的备份:
这是要执行的build文件:
用于j2me的build.xml:
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>
相关推荐
下面我们将深入探讨如何在Java程序中使用Ant以及`ant.jar`的重要性。 1. **Ant的基本概念** - **构建文件**:build.xml是Ant的主要配置文件,其中包含了一系列的`<target>`元素,每个target代表一个特定的任务或...
属性(property)在Ant中也极为重要,它们用于定义和使用变量,以便动态地改变构建过程中的某些行为。 4. Ant的任务和目标:学习如何编写和使用Ant预定义的任务,如(编译Java源代码)、(创建jar文件)、(复制...
### 如何使用ANT开发Java程序 #### 一、前言 Apache Ant 是一款开源的Java构建工具,用于自动化软件构建过程中的编译、测试、部署等任务。它使用XML格式来定义构建规则,并通过一系列预定义的任务来执行这些规则。...
在Ant中,开发者可以自定义任务,也可以使用预定义的任务,如`javac`用于编译Java源代码,`jar`用于创建JAR文件。通过这种方式,Ant使得构建过程可重复且可定制化,适合各种项目需求。 **Spring框架** Spring框架是...
这个“ant使用手册(中文教程)”涵盖了Ant的基本概念、配置语法、任务使用以及在Java项目中的实际应用。 1. **Ant基本概念** - **构建文件**:Ant的构建过程通过一个名为`build.xml`的XML文件进行描述,该文件...
Java安装程序的创建通常涉及到多个步骤,其中包括使用自动化构建工具如Apache Ant来简化流程。Apache Ant是一个基于XML的构建工具,它允许开发者定义构建过程,包括编译、打包、测试等任务,使得整个过程可重复且...
- **属性(Properties)**:Ant支持定义和使用属性,类似于变量,可以用于在整个构建文件中传递值。 - **任务(Tasks)**:Ant提供了一系列内置的任务,如`<javac>`用于编译Java源码,`<copy>`用于复制文件,`...
这个示例展示了如何使用Apache Ant工具来编译、打包和运行一个简单的Java应用程序。Ant是一个基于XML的构建工具,它允许开发者定义任务来自动化构建过程,如编译源代码、创建JAR文件、运行测试等。 首先,我们来看...
Ant是一个Java库和命令行工具,其设计目标是驱动构建过程,它允许开发人员通过XML文件定义任务,实现脚本化的工作流程,特别适用于构建和部署Java应用程序。 在Weblogic环境中,手动配置和部署应用往往耗时且容易...
在Ant中,`<jar>`元素用于创建Java档案(JAR)文件。一个JAR文件是一个包含类文件、资源文件和其他相关元数据的归档,通常用于打包和分发Java应用程序或库。通过在build.xml文件中配置`<jar>`任务,你可以指定源代码...
Ant是Apache软件基金会下的一个Java项目,它是一个强大的构建工具,尤其在Java应用程序的构建、部署和自动化测试中发挥着重要作用。本指南将详细介绍Ant的基本概念、安装与配置、任务定义、属性处理、文件操作以及...
- 属性是Ant中的变量,可以在构建文件中定义,并在其他地方引用。例如,可以定义一个版本号属性,然后在多个任务中使用。 - 属性可以通过命令行参数动态设置,也可以在构建文件中定义默认值。 5. **Ant条件与选择...
在Android开发过程中,Ant是一个非常重要的工具,它是一个开源的Java构建系统,广泛用于自动化编译、测试和部署Java应用程序,包括Android应用。本篇文章将详细介绍如何使用Ant来打包Android应用,以及涉及到的相关...
Ant是Apache软件基金会下的一个Java项目,主要用于构建Java应用程序。它是基于XML的构建工具,能够自动化编译、打包、测试等开发过程,极大地简化了Java项目的构建流程。本指南将深入探讨Ant工具的使用,帮助开发者...
例如,我们可以在应用程序的入口文件中使用 ConfigProvider 组件来设置语言为中文: ``` import { ConfigProvider } from 'antd'; import zhCN from 'antd/es/locale/zh_CN'; return ( ); ``` 这样,整个应用...
4. 中可以包含多个,如果不指定运行哪个任务(即直接运行ant命令),那么,将使用标签中指定的default属性的target。 Ant 的路径模式 再看下面的 ant 构建脚本: ``` 测试脚本" default="copyfile" basedir="."> ...
- **执行构建**:在命令行中使用`ant`命令执行构建过程。例如: ``` ant clean build ``` 这里`clean`和`build`是两个目标,分别表示清理旧的构建结果和重新构建项目。 #### 五、Ant核心任务介绍 - **javac**...
《Ant中文手册2.0》是一份详尽的教程,专为那些在Java开发中使用Ant构建工具的人员提供指导。Ant是Apache软件基金会开发的一个开源项目,它以XML为基础,用于自动化Java项目的构建过程,如编译、打包、测试等任务。...
### 使用Ant构建WAR包详解 在Java开发领域中,Ant是一种非常流行的自动化构建工具,它可以帮助开发者自动完成项目构建...通过本文的学习,相信你已经掌握了使用Ant构建WAR包的基本方法,可以在实际项目中灵活运用。