Ant构建是早期的java项目构建工具。目前已经渐渐被maven,gradle等取代。但是有些功能还是无法被取代的。比如远程部署功能。这一点简直太强大了。
说到Ant构建,这里先看看简单的配置。
准备一个java类,输出给定第一个参数
package com.xxx.build;
public class HelloAnt {
public static void main(String[] args) {
System.out.println(args[0]);
}
}
这段普通的代码,通过ant构建,会打印第一个参数。
构建配置代码build.xml
<?xml version="1.0" encoding="UTF-8" ?>
<project name="antbuild" default="run" basedir=".">
<target name="run">
<java fork="true" failοnerrοr="yes" classname="com.xxx.build.HelloAnt">
<arg line="你好,世界"/>
<classpath path="${basedir}/bin" />
</java>
</target>
</project>
构建的时候,我们给定参数是“你好,世界”。这里说明一下构建文件:
project节点是必备的,name属性随便填写,default一般是默认的构建任务,这里指定的是名为run这个target。
target中标识需要执行的任务。这是是直接运行HelloAnt这个类。
target中包含的其实是运行的命令,这里常用的命令如下:delete,mkdir,javac,jar,scp,sshexec等。
target中任务也可以又依赖关系,比如我们编译之前会先清除原来构建的内容,生成jar包我们需要依赖编译这个前置任务。
这个构建的结果如下:
我们是直接运行了HelloAnt这个类,这个结果符合我们的预期。
这里介绍一个插件,他可以帮助我们在本地运行linux虚拟机或服务器上的命令,前提是需要下载jsch-0.1.54.jar,放入eclipse的插件ant\lib目录下,如下所示。
引入了这个文件,我们还需要在eclipse上做个配置,Preferences->Ant->Runtime->Classpath->Ant Home Entries,点击右侧Add External JARs,将刚才的jsch-0.1.54.jar包加入:
至此,我们就配置好了ant+ssh相关的配置,直接修改build.xml文件,增加一个sshexec的任务,在服务器上,执行touch 命令创建一个文件。
<?xml version="1.0" encoding="UTF-8" ?>
<project name="antbuild" default="testsch" basedir=".">
<target name="run">
<java fork="true" failonerror="yes" classname="com.xxx.build.HelloAnt">
<arg line="你好,世界"/>
<classpath path="${basedir}/bin" />
</java>
</target>
<target name="testsch">
<sshexec command="touch /data/sch.txt" host="10.119.9.149" username="root"
password="root" trust="true"/>
</target>
</project>
运行Run As->Ant Build,控制台结果如下:
构建成功,连接linux服务器,并创建了文件:sch.txt
可以看到sshexec命令,其实和手工通过xshell连接linux,然后执行touch /data/sch.txt是一样的效果。只不过sshexec帮我们实现了ssh登录,通过command属性中的命令,执行了我们需要的任务。
ant的这个功能,似乎很强大,我们可以利用sshexec执行java -jar 命令运行我们推送到服务器 的jar包。