美文网首页
Ant脚本总结

Ant脚本总结

作者: Jorvi | 来源:发表于2018-12-19 13:36 被阅读0次

    项目结构:

    project
    ---src
    ---------com.anyservice
    ------------------MainClass.java
    ------------------config_export.properties
    ---lib


    <?xml version='1.0' encoding='utf-8'?>
    <project name="export" default="all" basedir=".">
    
      <!-- 1. 初始化 -->
      <target name="init">
        <!-- 设置属性 -->
        <property name="home" value="." />
        <property name="class.version" value="1.7" />
        <property name="cfg.jar" value="export.jar" />
        <property name="cfg.zip" value="export.zip" />
        
        <!-- 创建目录 -->
        <mkdir dir="${home}/build" />
        <mkdir dir="${home}/build/classes" />
        
        <!-- 时间戳 -->
        <tstamp>
          <format property="TODAY" pattern="yyyy-MM-dd HH:mm:ss" />
        </tstamp>
       
        <!-- 第三方jar包的路径 -->
        <path id="lib-classpath">
          <fileset dir="${home}/lib">
            <include name="**/*.jar"/>
          </fileset>
        </path>
      </target>
    
      <!-- 2. 清理 -->
      <target name="clean" depends="init">
        <delete dir="${home}/build" />
      </target>
    
      <!-- 3. 编译 -->
      <target name="compile" depends="init">
        <mkdir dir="${home}/build/classes" />
        <javac srcdir="${home}/src" destdir="${home}/build/classes" target="${class.version}" source="${class.version}" includes="com/anyservice/**" encoding="UTF-8" debug="true" debuglevel="lines,vars,source" includeantruntime="on">
          <!-- 编译依赖的第三方jar包 -->
          <classpath refid="lib-classpath"/>
        </javac>
      </target>
    
      <!-- 4. 构建jar -->
      <target name="jar" depends="init,compile">
      
        <!-- 复制配置文件到jar -->
        <copy todir="${home}/build">
          <fileset dir="${home}/src/com/anyservice">
            <include name="config_export.properties" />
          </fileset>
        </copy>
        
        <!-- 复制第三方jar包 -->
        <copy todir="${home}/build/lib">
          <fileset dir="${home}/lib"/>
        </copy>
    
        
        <!-- 第三方jar包路径转换成可被Class-Path引用的形式 -->
        <pathconvert property="quote.classpath" pathsep=" ">
          <mapper>
            <chainedmapper>
              <!-- jar包文件只留文件名,去掉目录信息 -->
              <flattenmapper/>
              <!-- add lib/prefix -->
              <globmapper from="*" to="lib/*"/>
            </chainedmapper>
          </mapper>
          <path refid="lib-classpath"/>
        </pathconvert>
        
        <!-- build jar -->
        <jar jarfile="${home}/build/${cfg.jar}">
          <fileset dir="${home}/build/classes" />
          <manifest>
            <attribute name="Target-Java" value="${class.version}" />
            <attribute name="Build-Time" value="${TODAY}" />
            <attribute name="Main-Class" value="com.anyservice.MainClass" />
            <attribute name="Class-Path" value="${quote.classpath}" />
          </manifest>
        </jar>
        
        <!-- delete classes -->
        <delete dir="${home}/build/classes" />
        
      </target>
    
      
      <!-- 5. zip -->
      <target name="zip" depends="jar">
        <zip destfile="${home}/build/${cfg.zip}" basedir="${home}/build" encoding="UTF-8" />
      </target>
    
      <!-- 6. 入口 -->
      <target name="all" depends="clean,zip" />
    
    </project>
    
    1. <target name="all" depends="clean,zip" />是打包脚本入口
    2. 执行某个target前,会先执行其depends里依赖的target
    3. 打入第三方jar包,需要在MANIFEST.MF文件的Class-Path中加入相应路径
      <attribute name="Class-Path" value="${quote.classpath}" />
    4. 第三方jar包的路径需要利用pathconvert转换得到

    最终打包成:


    相关文章

      网友评论

          本文标题:Ant脚本总结

          本文链接:https://www.haomeiwen.com/subject/qbfjkqtx.html