使用Ant编译非maven文件的配置文件build.xml示例
在jenkins中,如果想要编译非maven文件,建议使用ant工具,非常好用;
在项目下最外层根目录下,将对应的build.xml放入,在使用cmd/shell执行 ant 就可以了
<?xml version="1.0" encoding="UTF-8"?>
<!--
build.xml文件:
每个需要构建的项目都要定义一个build.xml文件(默认的名称),对构建过程进行定义
project标签:build.xml文件只能有一个project标签,代表定义一个构建项目
name:项目名称 。
basedir:基准目录,构建过程中的相对路径都会参照这个路径来。按照一般的习惯,build.xml都会放在项目的根目录下,
因此这里使用"."标示当前目录,也就是相对路径的跟都是项目根目录,这样很方便。
default:对应某一个target,当使用该配置文件,运行ant的时候,会把这个target作为执行的入口。
有点类似Maven中指定程序的主文件。
property标签:对属性的定义,共后续的构建步骤中使用。类似于java 的 static final String
name:属性名称,大消息敏感
value:属性值
target标签:一个构建项目可以包含多个target构建目标。一个构建目标,也可以依赖另外一个target构建目标。类似于Maven的goal
name:目标名称
depends:需要依赖的target目标,通过这个属性,也就实现了target的顺序执行
if:表示仅当条件满足的时候才执行target目标
-->
<project name="rmp" basedir="." default="makewar">
<!-- 定义代码编译时需要依赖的lib包的路径 -->
<property name="classpath_lib" value="WebRoot/WEB-INF/lib" />
<!-- 定义lib包的路径 -->
<path id="classpath">
<fileset dir="${classpath_lib}">
<include name="*.jar" />
</fileset>
</path>
<!--
定义<javac> 的 debuglevel值 。设置编译信息中显示的内容
source:源文件名称
lines:源码中行号信息
vars:方法的局部变量信息
-->
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
<property name="debuglevel" value="source,lines,vars" />
<!-- 获取源码路径中源码时候需要去除java文件,在这里配置 -->
<patternset id="no.java">
<exclude name="**/*.java" />
</patternset>
<!--
定义初始化过程
-->
<target name="init">
<property name="build" value="build/">
</property>
<property name="src" value="src">
</property>
<!-- 删除build目录 -->
<delete dir="${build}">
</delete>
<!-- 创建build目录 -->
<mkdir dir="${build}" />
<!-- 创建build\WEB-INF目录 -->
<mkdir dir="${build}\WEB-INF" />
<!-- 创建build\WEB-INF\classes目录 -->
<mkdir dir="${build}\WEB-INF\classes" />
<!-- 创建build\WEB-INF\lib目录 -->
<mkdir dir="${build}\WEB-INF\lib" />
<!-- 拷贝web文件到 build目录下 -->
<copy todir="${build}">
<!-- 获取 WebRoot目录下的文件 -->
<fileset dir="${basedir}\WebRoot">
<include name="WEB-INF/**" />
<include name="**" />
</fileset>
</copy>
<!-- 拷贝配置文件到build/WEB-INF/classes目录下 -->
<copy todir="${build}/WEB-INF/classes">
<!-- 去除java文件 -->
<fileset dir="${src}">
<patternset refid="no.java" />
</fileset>
</copy>
</target>
<!-- 定义complie目标,执行编译工作。依赖init目标 -->
<target name="complie" depends="init">
<!--
用于编译一个或多个Java文件
srcdir:源码路径,这里使用了上文定义的src变量
destdir:编译后的class文件输出的目录
classpathref:所使用的类路径,也就是编译源码的时候,需要依赖的class文件位置
debug:是否打印编译信息,默认是不打印的,如果设置为true,要与debugLevel组合进行设置
debugLevel:输出编译信息的规则
-->
<javac srcdir="${src}" destdir="${build}/WEB-INF/classes" encoding="utf-8" classpathref="classpath" includeantruntime="on" source="1.7" target="1.7">
<compilerarg line="-Xlint:unchecked" />
<compilerarg line="-Xlint:deprecation" />
<compilerarg line="-Xlint" />
<compilerarg line="-XDignore.symbol.file" />
</javac>
</target>
<!-- 定义makewar目标,执行打包工作。依赖complie目标 -->
<target name="makewar" depends="complie">
<!--
打war包
warfile:war文件定义
webxml:webxml文件位置
-->
<war warfile="rmp.war" webxml="${build}/WEB-INF/web.xml">
<!-- 需要的lib文件 -->
<lib dir="${build}/WEB-INF/lib">
<!-- 包含所有的文件 -->
<include name="**" />
</lib>
<fileset dir="${build}" />
</war>
</target>
</project>
正文到此结束