Ant java Api的使用方法

参考:http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0502_gawor/0502_gawor.html

    http://www.chinaaet.com/article/9809

http://www.zuidaima.com/user/1982170616236032/mood.htm

package com.test;

import java.io.File;
import java.util.Date;

import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;
import org.apache.tools.ant.taskdefs.Copy;
import org.apache.tools.ant.taskdefs.Delete;
import org.apache.tools.ant.taskdefs.Expand;
import org.apache.tools.ant.taskdefs.Mkdir;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.FilterSet;
import org.apache.tools.ant.types.PatternSet;

public class AntBuild {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 拷贝绘本资源文件
				File picRes = new File("d:\\app\\picBook.zip");
		buildPicBooks(picRes,"haha");
	}

	public static final String appDir="d:\\app";
	// 绘本空Android 工程存放目录
	public static final String apkDir = appDir+"\\apk";

	
	public static String buildPicBooks(File picRes,String title){
		long now = System.currentTimeMillis();
		//临时生成apk目录
		String fileName = String.format("d:\\app\\%d\\", System.currentTimeMillis());
		File file = new File(fileName);
		// 创建临时目录
		mkDir(file);
		// 拷贝APk资源文件、并替换app name
		copy2Replace(file, title);
		
		//解压绘本图片、音乐
		unZip(file, picRes);
		//将绘本jpg mp3 拷贝到app工程assets里
		String name = picRes.getName();
		File picFile = new File(fileName +name.substring(0,name.indexOf(".")) );
		File replace = new File(String.format(
				"%s\\OCCUPTION_PACKAGE\\assets\\dede_audios", fileName));
		copy(replace, "**/*.mp3", picFile);
		copy(replace, "**/*.MP3", picFile);
		replace = new File(String.format(
				"%s\\OCCUPTION_PACKAGE\\assets\\dede_images", fileName));
		copy(replace, "**/*.JPG", picFile);
		copy(replace, "**/*.jpg", picFile);
		//Build apk
		File build = new File(String.format(
				"%s\\OCCUPTION_PACKAGE\\build.xml", fileName));
		build(build);
		
		//apk 移动到正式apk目录
		File appFile = new File(String.format(
				"%s\\OCCUPTION_PACKAGE\\bin", fileName));
		copy(picRes.getParentFile(), "**/OCCUPTION_PACKAGE-debug.apk", appFile);
		//删除临时目录
		delDir(file);
		  System.out.println((System.currentTimeMillis()-now)/1000+"秒");  
		return null;
	}
	/**
	 * 
	 */
	public static void build(File file){
	        //1.5 以后使用,但是报错 import requires support in ProjectHelper
//	        Project project = new Project();
//	        try {  
//	            project.fireBuildStarted();  
//	            project.init();  
//	            ProjectHelper projectHelper = ProjectHelper.getProjectHelper();  
//	            projectHelper.parse(project, file);  
	          project.executeTarget(project.getDefaultTarget()); //调用默认的target标签  
//	            project.executeTarget("debug");    //调用删除target标签  
//	            project.fireBuildFinished(null);  
//	        } catch (Exception e) {  
//	            System.out.println("#############");  
//	            e.printStackTrace();  
//	        } 
	        Project p = new Project();
	        p.init();
	        ProjectHelper.configureProject(p,file);
	        p.executeTarget("debug");
	}
	/**
	 * 文件拷贝并替换apk名字
	 * 
	 * @param args
	 */
	public static void copy2Replace(File file, String title) {
		Project prj = new Project();
		Copy copy = new Copy();
		copy.setEncoding("UTF-8");
		copy.setProject(prj);
		copy.setTodir(file);

		FileSet fileSet = new FileSet();
		fileSet.setDir(new File(apkDir));
		fileSet.setIncludes("**/**"); // 拷贝所有文件
		copy.addFileset(fileSet);

		FilterSet filter = copy.createFilterSet();
		// 替换@app_name@ 为 title
		filter.addFilter("app_name", title);
		copy.execute();

	}

	/**
	 * 文件拷贝
	 * 
	 * @param args
	 */
	public static void copy(File dirFile, String include, File picFile) {
		Project prj = new Project();

		Copy copy = new Copy();
		copy.setEncoding("UTF-8");
		copy.setProject(prj);
		copy.setTodir(dirFile);
		FileSet fileSet = new FileSet();
		fileSet.setDir(picFile);
		fileSet.setIncludes(include); // 拷贝所有文件
		copy.addFileset(fileSet);
		copy.execute();

	}

	/**
	 * make dir
	 * 
	 * @param file
	 */
	private static void mkDir(File file) {
		// TODO Auto-generated method stub
		Project prj = new Project();
		Mkdir mkdir = new Mkdir();
		mkdir.setProject(prj);
		mkdir.setDir(file);
		mkdir.execute();
	}

	/**
	 * delete dir
	 * 
	 * @param file
	 */
	private static void delDir(File file) {
		// TODO Auto-generated method stub
		Project prj = new Project();
		Delete delete = new Delete();
		delete.setProject(prj);
		delete.setDir(file);
		delete.execute();
	}

	public static void unZip(File file, File zip) {
		Project prj = new Project();
		Expand expand = new Expand();
		expand.setProject(prj);
		expand.setSrc(zip);
		expand.setOverwrite(true);
		expand.setDest(file);
		PatternSet patternset = new PatternSet();
		patternset.setIncludes("**/**");
		patternset.setProject(prj);
		expand.addPatternset(patternset);
		expand.execute();
	}
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值