Ant编译JavaWeb项目
What(起因)
因为要将老项目做到CD(持续部署)中,所以需要通过第三方软件编译工具(Ant)进行打包发布,再通过Jenkins执行Ant编译脚本获取编译后文件,做到CD。
Why(何解)
<?xml version="1.0"?>
<project name="antName" default="jar" basedir=".">
<target name="clean">
<delete dir="build"/>
</target>
<path id="classpath">
<fileset dir="jdk1.7.0_60.jdk/Contents/Home/jre/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="jdk1.7.0_60.jdk/Contents/Home/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="WebRoot/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
</path>
<target name="init" description="构建工程">
<delete dir="build"/>
<echo message="编译所有JAVA类 begin"/>
<mkdir dir="build" />
<mkdir dir="build/WebRoot" />
<mkdir dir="build/WebRoot/admin" />
<mkdir dir="build/WebRoot/site" />
<mkdir dir="build/WebRoot/toHtml" />
<mkdir dir="build/WebRoot/WEB-INF" />
<mkdir dir="build/WebRoot/WEB-INF/classes" />
<javac srcdir="." destdir="build/WebRoot/WEB-INF/classes" debug="true" fork="true" executable="jdk1.7.0_60.jdk/Contents/Home/bin/javac" encoding="utf-8" target="1.7" source="1.7" debuglevel="lines,vars,source" nowarn="true" includeAntRuntime="no" failonerror="true">
<classpath refid="classpath"/>
<include name="**/*.*" />
</javac>
<echo message="编译所有JAVA类 end" />
<echo message="将admin、toHtml、site拷贝到目录下 start" />
<copy todir="build/WebRoot/admin" overwrite="true">
<fileset dir="WebRoot/admin" includes="**/*"/>
</copy>
<copy todir="build/WebRoot/site" overwrite="true">
<fileset dir="WebRoot/site" includes="**/*"/>
</copy>
<copy todir="build/WebRoot/toHtml" overwrite="true">
<fileset dir="WebRoot/toHtml" includes="**/*"/>
</copy>
<echo message="将admin、toHtml、site拷贝到目录下 end" />
</target>
</project>
以上是本次需要的ant的内容,其中有两个targetclean
与init
分别是删除工程目录下build文件和初始化工程目录下build文件,build
中有一个WebRoot
是编译后可直接发布到Tomcat下的工程文件,下面对它进行一个简要的解释:
- 作用
用于编译项目中所有.java文件,并且将WebRoot下指定文件(site、admin、toHtml
)拷贝到指定目录下,生成一个可发布的WebRoot(按项目需求进行调整
) - 标签
- target(要做的事)
- javac(JDK - javac命令)
- copy(拷贝)
- echo(输出语句)
结语
由于是10年的项目了,所以通过引用ant来完成编译,其实ant可以完成很多事情,也可以使用maven、gradle,一切按项目需求进行,现在的SpringCloud应用的是Maven和Gradle。