原创

使用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>
正文到此结束