`
daoger
  • 浏览: 529732 次
  • 性别: Icon_minigender_1
  • 来自: 山东济南
社区版块
存档分类
最新评论

程序中使用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>


分享到:
评论

相关推荐

    org.apache.tools.*需要的ant.jar包

    下面我们将深入探讨如何在Java程序中使用Ant以及`ant.jar`的重要性。 1. **Ant的基本概念** - **构建文件**:build.xml是Ant的主要配置文件,其中包含了一系列的`&lt;target&gt;`元素,每个target代表一个特定的任务或...

    使用Ant进行java开发

    属性(property)在Ant中也极为重要,它们用于定义和使用变量,以便动态地改变构建过程中的某些行为。 4. Ant的任务和目标:学习如何编写和使用Ant预定义的任务,如(编译Java源代码)、(创建jar文件)、(复制...

    如何使用ANT开发Java程序

    ### 如何使用ANT开发Java程序 #### 一、前言 Apache Ant 是一款开源的Java构建工具,用于自动化软件构建过程中的编译、测试、部署等任务。它使用XML格式来定义构建规则,并通过一系列预定义的任务来执行这些规则。...

    ant+Spting实例小程序可运行

    在Ant中,开发者可以自定义任务,也可以使用预定义的任务,如`javac`用于编译Java源代码,`jar`用于创建JAR文件。通过这种方式,Ant使得构建过程可重复且可定制化,适合各种项目需求。 **Spring框架** Spring框架是...

    ant使用手册(中文教程)

    这个“ant使用手册(中文教程)”涵盖了Ant的基本概念、配置语法、任务使用以及在Java项目中的实际应用。 1. **Ant基本概念** - **构建文件**:Ant的构建过程通过一个名为`build.xml`的XML文件进行描述,该文件...

    java安装程序,利用Ant构建打包工具

    Java安装程序的创建通常涉及到多个步骤,其中包括使用自动化构建工具如Apache Ant来简化流程。Apache Ant是一个基于XML的构建工具,它允许开发者定义构建过程,包括编译、打包、测试等任务,使得整个过程可重复且...

    ant 使用指南-ant入门

    - **属性(Properties)**:Ant支持定义和使用属性,类似于变量,可以用于在整个构建文件中传递值。 - **任务(Tasks)**:Ant提供了一系列内置的任务,如`&lt;javac&gt;`用于编译Java源码,`&lt;copy&gt;`用于复制文件,`...

    使用ant编译打包应用程序

    这个示例展示了如何使用Apache Ant工具来编译、打包和运行一个简单的Java应用程序。Ant是一个基于XML的构建工具,它允许开发者定义任务来自动化构建过程,如编译源代码、创建JAR文件、运行测试等。 首先,我们来看...

    [转]使用Ant管理配置Weblogic

    Ant是一个Java库和命令行工具,其设计目标是驱动构建过程,它允许开发人员通过XML文件定义任务,实现脚本化的工作流程,特别适用于构建和部署Java应用程序。 在Weblogic环境中,手动配置和部署应用往往耗时且容易...

    使用ant 元件所用的 jar 包

    在Ant中,`&lt;jar&gt;`元素用于创建Java档案(JAR)文件。一个JAR文件是一个包含类文件、资源文件和其他相关元数据的归档,通常用于打包和分发Java应用程序或库。通过在build.xml文件中配置`&lt;jar&gt;`任务,你可以指定源代码...

    ant使用指南(中文)

    Ant是Apache软件基金会下的一个Java项目,它是一个强大的构建工具,尤其在Java应用程序的构建、部署和自动化测试中发挥着重要作用。本指南将详细介绍Ant的基本概念、安装与配置、任务定义、属性处理、文件操作以及...

    Ant使用指南.rar

    - 属性是Ant中的变量,可以在构建文件中定义,并在其他地方引用。例如,可以定义一个版本号属性,然后在多个任务中使用。 - 属性可以通过命令行参数动态设置,也可以在构建文件中定义默认值。 5. **Ant条件与选择...

    使用ant打包android

    在Android开发过程中,Ant是一个非常重要的工具,它是一个开源的Java构建系统,广泛用于自动化编译、测试和部署Java应用程序,包括Android应用。本篇文章将详细介绍如何使用Ant来打包Android应用,以及涉及到的相关...

    ant工具使用指南ant工具使用指南

    Ant是Apache软件基金会下的一个Java项目,主要用于构建Java应用程序。它是基于XML的构建工具,能够自动化编译、打包、测试等开发过程,极大地简化了Java项目的构建流程。本指南将深入探讨Ant工具的使用,帮助开发者...

    Ant Design for React的DatePicker日期组件设置默认显示中文的方法

    例如,我们可以在应用程序的入口文件中使用 ConfigProvider 组件来设置语言为中文: ``` import { ConfigProvider } from 'antd'; import zhCN from 'antd/es/locale/zh_CN'; return ( ); ``` 这样,整个应用...

    Ant使用详细介绍(中文版)

    4. 中可以包含多个,如果不指定运行哪个任务(即直接运行ant命令),那么,将使用标签中指定的default属性的target。 Ant 的路径模式 再看下面的 ant 构建脚本: ``` 测试脚本" default="copyfile" basedir="."&gt; ...

    ant 中文手册2.0

    《Ant中文手册2.0》是一份详尽的教程,专为那些在Java开发中使用Ant构建工具的人员提供指导。Ant是Apache软件基金会开发的一个开源项目,它以XML为基础,用于自动化Java项目的构建过程,如编译、打包、测试等任务。...

    使用ant打war包

    ### 使用Ant构建WAR包详解 在Java开发领域中,Ant是一种非常流行的自动化构建工具,它可以帮助开发者自动完成项目构建...通过本文的学习,相信你已经掌握了使用Ant构建WAR包的基本方法,可以在实际项目中灵活运用。

Global site tag (gtag.js) - Google Analytics