Ant自定义任务并调用其他任务

本文介绍如何使用Apache Ant创建自定义任务(zipextend),用于将指定目录下的二级子目录打包成特定格式的文件,如.jar文件。通过在build.xml中定义此任务并设置参数,可以轻松实现文件夹的归档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将某一目录下面二级目录的文件夹打包

使用方式:

1.将代码打成jar包放到ant的lib目录下

2.在build.xml里引用

<taskdef name="zipextend" classname="ZipExtend"  />
3.target里调用

<zipextend basedir="d:/test"/>


代码:

import java.io.File;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;

public class ZipExtend extends Task{
	
	private File baseDir;
	private File DestFile;
	private String level;
	private String suffix;
	
	public File getBaseDir() {
		return baseDir;
	}
	public void setBaseDir(File baseDir) {
		this.baseDir = baseDir;
	}
	public File getDestFile() {
		return DestFile;
	}
	public void setDestFile(File destFile) {
		DestFile = destFile;
	}
	public String getLevel() {
		return level;
	}
	public void setLevel(String level) {
		this.level = level;
	}
	public String getSuffix() {
		return suffix;
	}
	public void setSuffix(String suffix) {
		this.suffix = suffix;
	}
	public ZipExtend() {
	}



	@Override
	public void execute() throws BuildException {
		super.execute();
		if(suffix == null)
			suffix = "jar";
		if(baseDir != null){
			File modules[] = baseDir.listFiles();
			for (int i = 0; i < modules.length; i++) {
				File module = modules[i];
				if(module.isDirectory()){
					File zjs[] = module.listFiles();
					for (int j = 0; j < zjs.length; j++) {
						File zj = zjs[j];
						if(zj.isDirectory()){
							Zip zip = new Zip();
							
							//调用其他任务时需要注入project对象
							zip.setProject(this.getProject());
							//定义task名称,否则为null
							zip.setTaskName("zipextend");
							
							zip.setBasedir(zj);
							zip.setDestFile(new File(zj.getAbsolutePath() + "." + suffix));
							log("baseDir:" + zj.getAbsolutePath());
							log("DestFile:" + zip.getDestFile().getAbsolutePath());
							zip.execute();
						}
					}
				}
			}
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值