• java web项目使用ant编译将不同的功能代码打包成jar,进而分局点将项目打包成不同的tar.gz包进而部署


    使用ant可以轻松的将一个项目分离代码,直接打包成不同需求的tar.gz包使用

    1.build.properties (属性)

    version.num=1.0 #版本信息

    2.build.xml (ant打包文件)

    <?xml version="1.0" encoding="UTF-8"?>
    <project basedir="." default="deploytargz" name="pomc">
        <!-- 引入配置文件 -->
        <property file="build.properties" />
        <!-- 配置引用属性 -->
        <property name="src.dir" value="src" />
        <property name="build.dir" value="build" />
        <property name="web.dir" value="WebRoot" />
        <property name="name" value="pomc" />
        <property name="target" value="1.8" />
        <property name="source" value="1.8" />
    
        <!-- 引用jar包的路径 -->
        <path id="pomc.classpath">
            <pathelement location="WebRoot/WEB-INF/classes" />
            <path refid="master-classpath" />
        </path>
        <path id="master-classpath">
            <fileset dir="${web.dir}/WEB-INF/lib">
                <include name="*.jar" />
                <include name="**/*.jar" />
            </fileset>
        </path>
    
        <!-- 初始化 -->
        <target name="init">
            <delete dir="${build.dir}/jar" />
            <mkdir dir="${build.dir}/jar" />
            <delete dir="${build.dir}/classes" />
            <mkdir dir="${build.dir}/classes" />
            <delete dir="${web.dir}/WEB-INF/classes" />
            <mkdir dir="${web.dir}/WEB-INF/classes" />
    
            <copy todir="${web.dir}/WEB-INF/classes" includeEmptyDirs="false">
                <!-- 将项目中除会编译生成class文件的java文件之外其他类型的文件拷贝到对应的目录下,排除指定文件名后缀 -->
                <fileset dir="${src.dir}">
                    <exclude name="**/*.launch" />
                    <exclude name="**/*.java" />
                </fileset>
            </copy>
        </target>
    
        <!-- 编译生成class文件 -->
        <target name="build" depends="init">
            <!-- 新建编译存放的classes文件 -->
            <mkdir dir="${build.dir}/classes" />
            <!-- java编译 -->
            <javac destdir="${build.dir}/classes" source="${source}" target="${target}" debug="true" deprecation="false" optimize="false" failonerror="true" encoding="utf-8">
                <src path="${src.dir}" />
                <!-- 编译所需要的jar包路径 -->
                <classpath refid="master-classpath" />
            </javac>
        </target>
    
        <!-- 将classes打包成jar包 -->
        <target name="jar" depends="build" description="Compress the java class files to jar">
            <mkdir dir="${build.dir}/jar" />
            <delete file="${build.dir}/jar/${name}.jar" />
            <buildnumber file="./buildnum.txt" />
            <!-- 指定时间戳 可以调用TODAY -->
            <tstamp>
                <format property="TODAY" pattern="yyyy-MM-dd HH:mm:ss" />
            </tstamp>
            <!-- 生成清单文件 -->
            <manifest file="${web.dir}/META-INF/MANIFEST.MF">
                <attribute name="Built-By" value="${user.name}" />
                <attribute name="Implementation-Version" value="${version.num}.${build.number}" />
                <attribute name="Built-Date" value="${TODAY}" />
            </manifest>
            <!-- 打包jar -->
            <!-- includes 包含哪些后缀文件 空格分隔 -->
            <jar destfile="${build.dir}/jar/${name}.jar" basedir="${build.dir}/classes" includes="**/*.class" manifest="${web.dir}/META-INF/MANIFEST.MF" />
        </target>
    
        <!-- depends指的是执行该任务,会先执行那个任务 -->
        <target name="deploytargz" depends="jar" description="Deploy application as a tar.gz file">
            <!-- 指定时间戳 可以调用VERSIONDAY -->
            <tstamp>
                <format property="VERSIONDAY" pattern="yyyyMMdd" />
            </tstamp>
            <!-- 将之前编译生成的classes路径下的编译结果拷贝到WEB路径下 -->
            <copy todir="${web.dir}/WEB-INF/lib" overwrite="true">
                <fileset dir="${build.dir}/jar">
                </fileset>
            </copy>
            <!-- 打包tar.gz -->
            <tar destfile="${name}${VERSIONDAY}.tar.gz" basedir="${web.dir}" compression="gzip" />
    
            <!-- 将tar.gz包拷贝到build的war目录下 -->
            <copy todir="${build.dir}" preservelastmodified="true">
                <fileset dir=".">
                    <include name="*.tar.gz" />
                </fileset>
            </copy>
        </target>
    
        <target name="cleanup">
            <!-- 删除编译文件夹 -->
            <delete dir="${build.dir}/classes" />
            <delete>
                <fileset dir="." includes="*.tar.gz"/>
            </delete>
        </target>
    </project>
    View Code
    为梦想不止不休!
  • 相关阅读:
    [USACO17JAN]Subsequence Reversal序列反转
    P1330 封锁阳光大学
    P1403 [AHOI2005]约数研究
    poj1456——Supermarket
    P1807 最长路_NOI导刊2010提高(07)
    P1137 旅行计划
    P1162 填涂颜色
    P1040 加分二叉树
    P1135 奇怪的电梯
    P1086 花生采摘
  • 原文地址:https://www.cnblogs.com/virtulreal/p/9734012.html
Copyright © 2020-2023  润新知