运用ant打包

<?xml version="1.0" encoding="gbk" ?>
<!-- ant调用cmd命令行,ant运行参数有空格的jar程序 -->
<project name="ant执行(调用)cmd命令行" default="make_jar_for_test5" basedir=".">
<property name="jarDir" value="E:\大地工作\updateBak\ant使用大全(我的)\用ant 压缩备份" />
<property name="testCopyFormDir" value="C:\t1" />
<property name="testCopyToDir" value="C:\t1\update" />

<target name="test1">
   <!-- 1.直截执行一句命令行 -->
   <!-- arg line 适合于参数中没有空格的情况 -->
   <exec executable="cmd" failοnerrοr="true">
    <arg line="/c echo %path%" />
   </exec>
</target>

<target name="test2">
   <!--
   2.这里演示的是ant中执行批处理文件“c:/cpy.bat”文件内容为一句命令,如下:
   java -classpath "${jarDir}/copyTool_fat.jar" cmd.file.CopyFile "D:/My Documents" "${testCopyFormDir}" -1
   -->  
   <exec executable="cmd" failοnerrοr="true">
    <arg line="/c c:/cpy" />
   </exec>
</target>

<target name="test3">
   <!--
   3.ant中以参数带空格的命令行的方式运行一个jar程序,等效执行这个批处理,如下:
   java -classpath "${jarDir}/copyTool_fat.jar" cmd.file.CopyFile "D:/My Documents" "${testCopyFormDir}" -1
   -->
   <exec executable="cmd" failοnerrοr="true">
    <arg value="/c" />
    <arg value="java" />
    <arg value="-classpath" />
    <arg value="${jarDir}/copyTool_fat.jar" />
    <arg value="cmd.file.CopyFile" />
    <arg value="${testCopyFormDir}" />
    <arg value="${testCopyToDir}" />
    <arg value="-2" />
   </exec>
</target>

<!-- 有关java方式,参考ant文档:ant\docs\manual\tasksoverview.html -->

<target name="test4">
   <!--
   4.ant中以参数带空格的java方式运行一个jar程序,等效执行这个批处理,如下:
   java -classpath "${jarDir}/copyTool_fat.jar" cmd.file.CopyFile "D:/My Documents" "${testCopyFormDir}" -1

   参数jar/classname不可同时用,用jar的时候要有入口类 ,这里用的是参数classname
   -->
   <java failοnerrοr="true" classname="cmd.file.CopyFile">
    <arg value="${testCopyFormDir}" />
    <arg value="${testCopyToDir}" />
    <arg value="-2" />
    <classpath>
     <pathelement location="${jarDir}/copyTool_fat.jar" />
    </classpath>
   </java>
</target>


<target name="make_jar_for_test5">
   <!-- 创建jar文件。
   如果用bat文件创建,批处理语句如:
   jar cvfm prj.jar prj_classes/META-INF/MANIFEST.MF -C prj_classes .
   rem bat文件和classes目录在同一父级目录里面

   其中MANIFEST.MF内容为3句,如下:
   Manifest-Version: 1.0
   Created-By: Fat Jar Eclipse Plug-In
   Main-Class: cmd.file.CopyFile
   -->
   <jar jarfile="copyTool.jar" basedir="${jarDir}\copyTool\bin">
    <manifest>
     <attribute name="Manifest-Version" value="1.0"/>
     <attribute name="Created-By" value="chenxiaowen"/>
     <!--如果想要以 <java jar="copyTool.jar"/ ……> 的方式运行就必须列出引用到的jar文件,否则报错:
     java.lang.NoClassDefFoundError: org/apache/commons/lang/time/DateUtils
     并且在调用的时候要保证列出的jar文件的位置没有发生变化(例子参见 test5 )
     -->
     <attribute name="Class-Path" value="copyTool\lib\commons-io-1.4.jar copyTool\lib\commons-lang-2.4.jar"/>
     <attribute name="Main-Class" value="cmd.file.CopyFile"/>
    </manifest>
   </jar>
</target>


<!-- <classpath refid="libs" /> -->
    <path id="libs">
     <pathelement path="${jarDir}"/>
   <fileset dir="${jarDir}">
            <include name="**/*.jar"/>
        </fileset>
   <!-- pathelement path="commons-io-1.4.jar" / -->
   <!--pathelement location="commons-lang-2.4.jar" / -->
    </path>

<target name="test5">
   <!--  
   使用多个jar文件(没有用jar fat打包为一个)
   ant中以参数带空格的java方式运行一个jar程序。
   参数jar/classname不可同时用,用jar的时候要有入口类 ,这里用的是参数jar
   -->
   <java dir="${jarDir}" jar="${jarDir}/copyTool.jar" fork="true" maxmemory="128m" failοnerrοr="true">
    <arg value="${testCopyFormDir}" />
    <arg value="${testCopyToDir}" />
    <arg value="-2" />
    <!-- 无需这里指定 classpath,classpath已经在创建 copyTool.jar 的时候指定了 -->
   </java>
</target>


<target name="test6">
   <!--
   使用1个jar文件(用jar fat打包为一个)
   ant中以参数带空格的java方式运行一个jar程序。
   参数jar/classname不可同时用,用jar的时候要有入口类 ,这里用的是参数jar
   -->
   <java failοnerrοr="true" fork="true" jar="${jarDir}/copyTool_fat.jar" dir="${jarDir}/">
    <arg value="${testCopyFormDir}" />
    <arg value="${testCopyToDir}" />
    <arg value="-2" />
   </java>
</target>


<target name="test7">
   <!--
   使用多个jar文件(没有用jar fat打包为一个)
   ant中以参数带空格的java方式运行一个jar程序。  
   参数jar/classname不可同时用,用jar的时候要有入口类 ,这里用的是参数classname
  
   以批处理方式执行需要多个jar文件的程序所用的命令行如:
   java -classpath ".\copyTool.jar;.\commons-io-1.4.jar;.\commons-lang-2.4.jar" cmd.file.CopyFile "D:/My Documents" "${testCopyFormDir}" -1
   java -classpath ".\copyTool.jar;.\lib\commons-io-1.4.jar;.\lib\commons-lang-2.4.jar" cmd.file.CopyFile "D:/My Documents" "${testCopyFormDir}" -1
   -->
   <java failοnerrοr="true" classname="cmd.file.CopyFile" fork="true">
    <arg value="${testCopyFormDir}" />
    <arg value="${testCopyToDir}" />
    <arg value="-2" />
    <!-- 所用的jar文件在这个引用里面 -->
    <classpath refid="libs"/>
   </java>
</target>

</project>

 

原文引自:http://hi.baidu.com/chenxiaowen/blog/item/d9cdd409c0d87185d1581bc7.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值