阅读更多
本实例主要讲述如何对ant build.xml进行定制,以java方式实现其相关功能,方便进行拓展定制自定义任务
关于最简单的Ant customize例子,网上应该有很多实例,这里直接上一个例子,见资源AntCustomizeTask.rar,可直接下载运行build.xml即可。下面进入正题
一、关于build自带命令java实现,如delete,java,javac,mkDir,zip等
通过读ant.jar源码我们发现,在ant.taskrefs包目录下,存在我们需要的各种实现实例下面以mkdir,javac为例,讲述如何利用ant的API在java中实现这2个命令
1.mkdir
public static void makeDir(String source) {
Mkdir mkDir = new Mkdir();
Project project = new Project();
project.init();
mkDir.setProject(project);
mkDir.setTaskName("mkdir");
mkDir.setDescription("mkDir");
mkDir.setDir(new File(source));
mkDir.execute();
}
通过测试我们发现,直接通过构建包目录下Mkdir命令即可很方便实现改命令
2.javac
public static void javac(Path srcdir, String destDir, String excludes, Path classpath) {
Javac javac = new Javac();
Project project = new Project();
project.init();
javac.setProject(project);
javac.setFork(true);
javac.setTaskName("javac");
javac.setDescription("javac");
javac.setSrcdir(srcdir);
javac.setDestdir(new File(destDir));
javac.setExcludes(excludes);
javac.setClasspath(classpath);
javac.execute();
}
这里需要注意的是,其中classPath,由于我们通常不同项目都是需要依赖不同jar,所以该参数我们一般通过ant文件中自定义,后端通过ant中的path id去做传递,通过以下API即可获取ant中定义的名为lib.classpath的路径:
this.getProject().getReferences().get("lib.classpath").toString()
二、关于如何实现定制的antTask的java单元测试
我们通过查找ant相关文档发现,他提供了一个JUnit Rule org.apache.tools.ant.BuildFileRule,通过该providers我们可以轻松实现ant脚本的单元测试问题
下面附上ant官方自带给出的ant单元测试实例:见HelloWorldTest.rar
有了以上功能,我们可以轻松通过ant满足各种定制化的环境部署要求,保障开发和运维的协同
对于实现企业内部DevOps管理可以有比较大的帮助
交流可邮件
[email protected]
本文系原创,转载请联系作者
- AntCustomizeTask.rar (6.5 MB)
- 下载次数: 0
- HelloWorldTest.rar (648 Bytes)
- 下载次数: 0