Java构建工具ant
1、什么是ant:ant是构建工具 2、什么是构建:概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个 3、ant的好处:
- 跨平台 —因为ant是使用java实现的,所以它跨平台
- 使用简单 —与ant的兄弟make比起来
- 语法清晰—同样是和make相比
- 功能强大—ant能做的事情很多,可能你用了很久,你仍然不知道它能有多少功能。当你自己开发一些ant插件的时候,你会发现它更多的功能。
4、ant的兄弟make:ant做的很多事情,大部分是曾经有一个叫make的所做的,不过对象不同,make更多应用于c/c++ ,ant更多应用于Java。当然这不是一定的,但大部分人如此。
build.xml
ant和make需要makefile一样有个配置文件,叫build.xml
配置
例子
<?xml version="1.0" encoding="UTF-8" ?>
<project name="HelloWorld" default="run" basedir=".">
<property name="src" value="src"/>
<property name="dest" value="classes"/>
<property name="hello_jar" value="hello1.jar"/>
<target name="init">
<mkdir dir="${dest}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>
<target name="build" depends="compile">
<jar jarfile="${hello_jar}" basedir="${dest}"/>
</target>
<target name="run" depends="build">
<java classname="test.ant.HelloWorld" classpath="${hello_jar}"/>
</target>
<target name="clean">
<delete dir="${dest}" />
<delete file="${hello_jar}" />
</target>
<target name="rerun" depends="clean,run">
<ant target="clean" />
<ant target="run" />
</target>
</project>
可以配置变量叫property
可以配置target,每个target还可以有依赖depends,depends是它所依赖的target,在执行这个target 例如这里的compile之前ant会先检查init是否曾经被执行过,如果执行 过则直接直接执行compile,如果没有则会先执行它依赖的target例如这里的init,然后在执行这个target。
target里还可以嵌套执行其他的target。
每个target都可以手动执行。
变量可以抽成Property文件
比如可以创建一个kv键值对,非xml的all.properties文件,然后build.xml里可以读这个文件当property
<property file="all.properties" />
和直接写build.xml效果是一样的
复用build.xml
引用其他的build.xml,这样就不用复制过来了。
<!--include a xml file ,it can be common propery ,can be also a target -->
<!DOCTYPE project [
<!ENTITY share-variable SYSTEM "file:../include.xml">
]>
<project name="HelloWorld" default="run" basedir=".">
<!--use the include -->
&share-variable;
这样include.xml里的property和target能给引用它的xml共享。