<?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