美文网首页
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