![]() |
Q?xml version="1.0"?Q?br>Qproject name="Hello world" default="doc"Q?/font> Q?-- properies --Q?br>Qproperty name="src.dir" value="src" /Q?br>Qproperty name="report.dir" value="report" /Q?br>Qproperty name="classes.dir" value="classes" /Q?br>Qproperty name="lib.dir" value="lib" /Q?br>Qproperty name="dist.dir" value="dist" /Q?br>Qproperty name="doc.dir" value="doc"/Q?/font> Q?-- 定义classpath --Q?br>Qpath id="master-classpath"Q?br>Qfileset file="${lib.dir}/*.jar" /Q?br>Qpathelement path="${classes.dir}"/Q?br>Q?pathQ?/font> Q?-- 初始化Q?--Q?br>Qtarget name="init"Q?br>Q?targetQ?/font> Q?-- ~译 --Q?br>Qtarget name="compile" depends="init" description="compile the source files"Q?br>Qmkdir dir="${classes.dir}"/Q?br>Qjavac srcdir="${src.dir}" destdir="${classes.dir}" target="1.4"Q?br>Qclasspath refid="master-classpath"/Q?br>Q?javacQ?br>Q?targetQ?/font> Q?-- 试 --Q?br>Qtarget name="test" depends="compile" description="run junit test"Q?br>Qmkdir dir="${report.dir}"/Q?br>Qjunit printsummary="on" haltonfailure="false" failureproperty="tests.failed" showoutput="true"Q?br>Qclasspath refid="master-classpath" /Q?br>Qformatter type="plain"/Q?br>Qbatchtest todir="${report.dir}"Q?br>Qfileset dir="${classes.dir}"Q?br>Qinclude name="**/*Test.*"/Q?br>Q?filesetQ?br>Q?batchtestQ?br>Q?junitQ?br>Qfail if="tests.failed"Q?br>*********************************************************** **** One or more tests failed! Check the output ... **** *********************************************************** Q?failQ?br>Q?targetQ?/font> Q?-- 打包成jar --Q?br>Qtarget name="pack" depends="test" description="make .jar file"Q?br>Qmkdir dir="${dist.dir}" /Q?br>Qjar destfile="${dist.dir}/hello.jar" basedir="${classes.dir}"Q?br>Qexclude name="**/*Test.*" /Q?br>Qexclude name="**/Test*.*" /Q?br>Q?jarQ?br>Q?targetQ?/font> Q?-- 输出api文档 --Q?br>Qtarget name="doc" depends="pack" description="create api doc"Q?br>Qmkdir dir="${doc.dir}" /Q?br>Qjavadoc destdir="${doc.dir}" author="true" version="true" use="true" windowtitle="Test API"Q?br>Qpackageset dir="${src.dir}" defaultexcludes="yes"Q?br>Qinclude name="example/**" /Q?br>Q?packagesetQ?br>QdoctitleQ<![CDATA[Qh1QHello, testQ?h1Q]]Q</doctitleQ?br>QbottomQ<![CDATA[QiQAll Rights Reserved.Q?iQ]]Q</bottomQ?br>Qtag name="todo" scope="all" description="To do:" /Q?br>Q?javadocQ?br>Q?targetQ?br>Q?projectQ?/font> |
![]() |
![]() |
![]() |
Buildfile: F:\eclipse-projects\Hello\build.xml init: compile: [mkdir] Created dir: F:\eclipse-projects\Hello\classes [javac] Compiling 2 source files to F:\eclipse-projects\Hello\classes test: [mkdir] Created dir: F:\eclipse-projects\Hello\report [junit] Running example.HelloTest [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.02 sec pack: [mkdir] Created dir: F:\eclipse-projects\Hello\dist [jar] Building jar: F:\eclipse-projects\Hello\dist\hello.jar doc: [mkdir] Created dir: F:\eclipse-projects\Hello\doc [javadoc] Generating Javadoc [javadoc] Javadoc execution [javadoc] Loading source files for package example... [javadoc] Constructing Javadoc information... [javadoc] Standard Doclet version 1.4.2_04 [javadoc] Building tree for all the packages and classes... [javadoc] Building index for all the packages and classes... [javadoc] Building index for all classes... [javadoc] Generating F:\eclipse-projects\Hello\doc\stylesheet.css... [javadoc] Note: Custom tags that could override future standard tags: @todo. To avoid potential overrides, use at least one period character (.) in custom tag names. [javadoc] Note: Custom tags that were not seen: @todo BUILD SUCCESSFUL Total time: 11 seconds |
以前对于ant的用L避而不触,M为有炚w度,最q一直看我们目中的build.xml忽而觉得非常简单,也模仿着在我?a >www.javaedu.com开发上使用了一下,非常不错Q以下是我的打包文gbuild.xmlQ?br>
<?xml version="1.0"?>
<project name="payManager" default="all" basedir=".">
<property name="src.dir" value="JavaSource" />
<property name="classes.dir" value="WebContent/WEB-INF/classes" />
<property name="lib.dir" value="WebContent/WEB-INF/lib" />
<property name="WebContent.dir" value="WebContent" />
<!--用于输出的时文件夹与打包的文g?->
<property name="temp.dir" value="D:\temp" />
<property name="war.dir" value="D:\war" />
<!--对于不同环境的war包,使用不同的配|文?->
<property name="生.dir" value="bak\生" />
<property name="开?dir" value="bak\开? />
<!-- 定义classpath -->
<path id="master-classpath">
<fileset file="${lib.dir}/*.jar" />
<pathelement path="${classes.dir}" />
</path>
<target name="clean">
<delete dir="${temp.dir}" />
<delete dir="${classes.dir}" />
<delete file="${war.dir}/开?ROOT.war"/>
<delete file="${war.dir}/生/ROOT.war"/>
</target>
<!-- 初始化Q?-->
<target name="init" depends="clean">
</target>
<!-- ~译 -->
<target name="compile" depends="init" description="compile the source files">
<mkdir dir="${temp.dir}/生" />
<mkdir dir="${temp.dir}/开? />
<mkdir dir="${classes.dir}" />
<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true" encoding="GB2312">
<classpath refid="master-classpath" />
</javac>
<copy todir="${temp.dir}/生" overwrite="true">
<fileset dir="${WebContent.dir}">
<include name="**/**" />
</fileset>
</copy>
<copy todir="${temp.dir}/生/WEB-INF/classes" overwrite="true">
<fileset dir="${生.dir}">
<include name="jlo_logging.xml" />
<include name="log4j.properties" />
<include name="mvncore.xml" />
<include name="mvnForum_i18n_zh_CN.properties" />
<include name="mvnforum.xml" />
<include name="whirlycache.xml" />
</fileset>
</copy>
<copy todir="${temp.dir}/开? overwrite="true">
<fileset dir="${WebContent.dir}">
<include name="**/**" />
</fileset>
</copy>
<copy todir="${temp.dir}/开?WEB-INF/classes" overwrite="true">
<fileset dir="${开?dir}">
<include name="jlo_logging.xml" />
<include name="log4j.properties" />
<include name="mvncore.xml" />
<include name="mvnForum_i18n_zh_CN.properties" />
<include name="mvnforum.xml" />
<include name="whirlycache.xml" />
</fileset>
</copy>
</target>
<!--打包-->
<target name="war" depends="compile">
<mkdir dir="${war.dir}/生" />
<mkdir dir="${war.dir}/开? />
<jar jarfile="${war.dir}/生/ROOT.war">
<fileset dir="${temp.dir}/生">
<include name="**/*" />
</fileset>
</jar>
<jar jarfile="${war.dir}/开?ROOT.war">
<fileset dir="${temp.dir}/开?>
<include name="**/*" />
</fileset>
</jar>
<delete dir="${temp.dir}"/>
</target>
<target name="all" depends="war">
<delete dir="${classes.dir}" />
<delete dir="${temp.dir}" />
</target>
</project>
值得注意的是Q在书写build.xml的时候一定要心Q别写错了,我就是因为粗心,在写下面代码的时候:
<fileset dir="${生.dir}">
.<include name="jlo_logging.xml" />
<include name="log4j.properties" />
<include name="mvncore.xml" />
<include name="mvnForum_i18n_zh_CN.properties" />
<include name="mvnforum.xml" />
<include name="whirlycache.xml" />
</fileset>
不小心在U色代码前加了一?#8220;.”Q结果报了一?font color="#ff0033">type doesn't support nested text data. 的错Q我找了半天没找出原因,到网上搜了一下竟然没有找到答案,后来才发现自己写错了Q大汗,Ҏ后,搞定Q爽啊。是?/p>
内容摘要Q?br> ant是一个基于JAVA的自动化脚本引擎Q脚本格式ؓXML。除了做JAVA~译相关d外,ANTq可以通过插g实现很多应用的调用?br>
当一个代码项目大了以后,每次重新~译Q打包,试{都会变得非常复杂而且重复Q因此c语言中有make脚本来帮助这些工作的扚w完成。在Java 中应用是q_无关性的Q当然不会用q_相关的make脚本来完成这些批处理d了,ANT本n是q样一个流E脚本引擎,用于自动化调用程序完成项目的~? 译,打包Q测试等。除了基于JAVA是^台无关的外,脚本的格式是ZXML的,比make脚本来说q要好维护一些?br>
每个ant脚本Q缺省叫build.xmlQ中讄了一pdd(target)Q比如对于一个一般的目可能需要有以下d?/p>