Ant 构建文件的一种写法

来源:互联网 发布:舞蹈软件下载 编辑:程序博客网 时间:2024/04/26 00:23

BuildDesEncryptor.xml

[html] view plaincopy
  1. <project name="DesEncryptor" default="execute.class" basedir=".">  
  2.     <echo message="1.define variables~" />  
  3.   
  4.     <!-- 名称、版本、作者 -->  
  5.     <property name="name" value="DesEncryptor" />  
  6.     <property name="version" value="1.0" />  
  7.     <property name="author" value="yang3wei" />  
  8.   
  9.     <property name="libs" value="${basedir}/libs" />  
  10.     <property name="desktop" value="/Users/user/Desktop" />  
  11.   
  12.     <property name="src" value="${basedir}/src_des" />  
  13.     <property name="build" value="${basedir}/build_des" />  
  14.   
  15.     <property name="res_package" value="org/bruce/des/encryptor/resources" />  
  16.     <property name="src.res" value="${src}/${res_package}" />  
  17.     <property name="build.res" value="${build}/${res_package}" />  
  18.   
  19.     <!-- jar包必要参数 -->  
  20.     <property name="dist" value="${basedir}/dist_des" />  
  21.     <property name="dist.jar.name" value="${name}${version}.jar" />  
  22.     <property name="dist.jar.path" value="${dist}/${dis.jar.name}" />  
  23.     <property name="entry.class" value="org.bruce.des.encryptor.entry.DesEncryptorView" />  
  24.   
  25.   
  26.     <echo message="2.define external.jars.path" />  
  27.     <path id="external.jars.path">  
  28.         <fileset dir="${libs}">  
  29.             <include name="**/*.jar" />  
  30.         </fileset>  
  31.     </path>  
  32.   
  33.     <target name="prepare">  
  34.         <echo message="3.prepare" />  
  35.         <mkdir dir="${build}" />  
  36.         <mkdir dir="${dist}" />  
  37.     </target>  
  38.   
  39.   
  40.     <target name="compile" depends="prepare">  
  41.         <echo message="5.compile" />  
  42.         <!-- 将src目录下的资源文件复制到 build目录下面(保留包结构) -->  
  43.         <delete dir="${build.res}" />  
  44.         <copy todir="${build.res}">  
  45.             <fileset dir="${src.res}">  
  46.                 <include name="**/*.jpg" />  
  47.                 <include name="**/*.png" />  
  48.                 <include name="**/*.gif" />  
  49.                 <include name="**/*.prop" />  
  50.                 <include name="**/*.properties" />  
  51.                 <exclude name="**/*.torrent" />  
  52.             </fileset>  
  53.         </copy>  
  54.   
  55.         <javac srcdir="${src}" destdir="${build}" encoding="UTF-8" deprecation="true" listfiles="off" fork="true" target="1.6" debug="false" failonerror="false">  
  56.             <!--给编译器指定编码,防止出现:"警告: 编码 GBK 的不可映射字符"-->  
  57.             <compilerarg line="-encoding UTF-8 " />  
  58.             <classpath refid="external.jars.path" />  
  59.         </javac>  
  60.         <echo message="compile finished!" />  
  61.     </target>  
  62.   
  63.   
  64.     <target name="execute.class" depends="compile">  
  65.         <echo message="${name}.execute" />  
  66.         <java classname="${entry.class}" classpath="${build}" fork="true">  
  67.             <sysproperty key="file.encoding" value="UTF-8" />  
  68.             <classpath refid="external.jars.path" />  
  69.         </java>  
  70.     </target>  
  71.   
  72.     <target name="package2jar" depends="compile">  
  73.         <echo message="${name}.package2jar" />  
  74.         <jar destfile="dist.jar.path" basedir="${build}">  
  75.             <manifest>  
  76.                 <attribute name="Created-By" value="${author}" />  
  77.                 <attribute name="Main-Class" value="${entry.class}" />  
  78.             </manifest>  
  79.             <zipfileset excludes="META-INF/*.SF" src="./libs/IOUtils.jar" />  
  80.         </jar>  
  81.     </target>  
  82.   
  83.     <target name="execute.jar" depends="package2jar">  
  84.         <echo message="${name}.jar.execute" />  
  85.         <java fork="true" failonerror="true" jar="dist.jar.path">  
  86.             <sysproperty key="file.encoding" value="UTF-8" />  
  87.         </java>  
  88.     </target>  
  89.   
  90.     <target name="copy2desktop" depends="package2jar">  
  91.         <echo message="${name}.copy2desktop" />  
  92.         <copy file="dist.jar.path" tofile="${desktop}/${dist.jar.name}" />  
  93.     </target>  
  94.   
  95.     <target name="clean">  
  96.         <delete dir="${build}" />  
  97.         <delete file="dist.jar.path" />  
  98.         <delete dir="${dist}" />  
  99.     </target>  
  100.   
  101.     <target name="rerun" depends="clean">  
  102.         <ant antfile="BuildDesEncryptor.xml" target="execute.class" />  
  103.     </target>  
  104. </project>  

要注意的是,本次我将ant 默认的 build.xml 文件名改成了  BuildDesEncryptor.xml

该操作会导致一个问题:

在执行  rerun 这个  target 的时候,竟然报出错误说找不到 build.xml 文件

很显然是因为我没有使用默认的文件名称所致。

<ant antfile="BuildDesEncryptor.xml" target="execute.class" />

上面这行我之前是按如下的方式写的

<ant target="execute.class" />

可见:

如果构建文件没有使用默认的 build.xml 作为文件名的话

ant 标签里最好还是给写上 antfile 这个属性。

原创粉丝点击