免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
無所不能的“螞蟻”--Ant(一)(二)(三)(四)
說他無所不能,好像有點(diǎn)夸張,但是用過Ant之后,感覺真的是只有想不到?jīng)]有作不到.Ant,原作者選擇他作為軟件名字的意思是指"令一個(gè)簡潔的工具"(Another Neat Tool),而這個(gè)真正的名字現(xiàn)在去很少為人所知
,但這絲毫不影響他成為最優(yōu)秀的構(gòu)建工具.
現(xiàn)在開始我將進(jìn)入一個(gè)"螞蟻"的世界,通過例子,真真正正去了解他!
文章參考資料可以到http://www.manning.com/antbook去下載
Ant的最好學(xué)習(xí)資料<<使用Ant進(jìn)行Java開發(fā)>>
Ant的官方網(wǎng)站: http://ant.apache.org/
Ant的最新版本:Ant 1.6.5
本文所有的例子運(yùn)行的環(huán)境:JDK1.4.2,Ant1.6.2,eclipse3.0
一.使用Ant運(yùn)行Java程序
我們先從簡單的Hello學(xué)起,目錄結(jié)構(gòu)如下
project--
|src--
|         |--org.ant.chapter1.Hello
|bin
|build.xml
以后的例子大多采用此目錄結(jié)構(gòu),特例會額外聲明
build.xml文件
<?xml version="1.0"?>
<project name="project" default="run">
<target name="compile">
<javac destdir="bin" srcdir="src"></javac>
</target>
<target name="run" depends="compile">
<java classname="org.ant.chapter1.Hello">
</java>
</target>
</project>
從結(jié)構(gòu)來看構(gòu)建文件很簡單,里面的內(nèi)容大家也一定能夠看得懂,可以看出Ant的核心任務(wù)就是target,一個(gè)Ant文件有多個(gè)target組成,而這些target之間,又有相互的依賴關(guān)系--depends,運(yùn)行的時(shí)候默認(rèn)運(yùn)行project中指定的target.
javac--編譯java文件     java--運(yùn)行java文件
使用eclipse中集成的Ant運(yùn)行build.xml文件(當(dāng)然,也可以將ANT_HOME加到Path中,在命令行中運(yùn)行)
Buildfile: D:\MyEclipse\workspace\sad\build.xml
compile:
run:
[java] Working directory ignored when same JVM is used.
[java] Could not find org.ant.chapter1.Hello. Make sure you have it in your classpath
[java]  at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:166)
[java]  at org.apache.tools.ant.taskdefs.Java.run(Java.java:705)
[java]  at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:177)
[java]  at org.apache.tools.ant.taskdefs.Java.execute(Java.java:83)
[java]  at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
[java]  at org.apache.tools.ant.Task.perform(Task.java:364)
[java]  at org.apache.tools.ant.Target.execute(Target.java:341)
[java]  at org.apache.tools.ant.Target.performTasks(Target.java:369)
[java]  at org.apache.tools.ant.Project.executeTarget(Project.java:1214)
[java]  at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:379)
[java]  at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:135)
BUILD SUCCESSFUL
Total time: 703 milliseconds
,java入門的經(jīng)典錯(cuò)誤,ClassNotDefException,可見是classpath設(shè)置問題,而觀察得到compile成功運(yùn)行,所以我們在run-target里面加入classpath的配置
<?xml version="1.0"?>
<project name="project" default="run">
<target name="compile">
<javac destdir="bin" srcdir="src"></javac>
</target>
<target name="run" depends="compile">
<java classname="org.ant.chapter1.Hello">
<classpath path="bin"></classpath>
</java>
</target>
</project>
運(yùn)行
Buildfile: D:\MyEclipse\workspace\sad\build.xml
compile:
run:
[java] Hello World!
BUILD SUCCESSFUL
Total time: 672 milliseconds
成功!!第一個(gè)Ant應(yīng)用完成,有人會說:用IDE運(yùn)行豈不是更簡單,但是你要知道運(yùn)行java程序只是Ant的一個(gè)小小的功能,后面我們會看到Ant的更強(qiáng)大的功能!
下一篇文章將介紹java程序運(yùn)行的擴(kuò)展及用Ant運(yùn)行tomcat!
java程序運(yùn)行的擴(kuò)展
1.帶有參數(shù)的應(yīng)用程序運(yùn)行
Ant在<java>任務(wù)中提供了<arg>元素,<arg>有四種屬性value,file,line,path
public class Hello {    public static void main(String[] args) {
System.out.println("Hello " + args[0]);
File file = new File(args[1]);
String[] filename = file.list();
for(int i = 0; i < filename.length; i++) {
System.out.println(filename[i]);
}
}
}
build.xml
<?xml version="1.0"?>
<project name="project" default="run">
<property name="run.classpath" value="bin"></property>
<target name="compile">
<javac destdir="bin" srcdir="src"></javac>
</target>
<target name="run" depends="compile">
<java classname="org.ant.chapter1.Hello">
<classpath path="${run.classpath}"></classpath>
<arg value="Ant"/>
<arg file="D:\rag"/>
</java>
</target>
</project>
Buildfile: D:\MyEclipse\workspace\sad\build.xml
compile:
run:
[java] Hello Ant
[java] hello.dat
BUILD SUCCESSFUL
Total time: 734 milliseconds
2.控制新的JVM
一般的<java>任務(wù)都運(yùn)行在當(dāng)前的JVM中,單一些特定的情況下將Ant運(yùn)行在新的JVM下面,這時(shí)只需要將<java>中的一個(gè)屬性fork設(shè)置為true就可以了.
我們知道,java命令提供了許多的運(yùn)行參數(shù),用于指定JVM的屬性,同樣在Ant也提供相應(yīng)的屬性,看例子:
<?xml version="1.0"?>
<project name="project" default="run">
<property name="run.classpath" value="bin"></property>
<property name="Search.JVM.extra.args" value="-Xincgc"></property>
<target name="compile">
<javac destdir="bin" srcdir="src"></javac>
</target>
<target name="run" depends="compile">
<java classname="org.ant.chapter1.Hello" fork="true"
maxmemory="64m">
<classpath path="${run.classpath}"></classpath>
<jvmarg line="${Search.JVM.extra.args}"/>
<arg value="Ant"/>
<arg file="D:\rag"/>
</java>
</target>
</project>
3.運(yùn)行jar文件,使用failonerror處理錯(cuò)誤
<java>同樣提供了運(yùn)行jar文件的屬性
MANIFEST.MF
Mainfest-Version: 1.0
Created-By: myth
Sealed: false
Main-Class: org.ant.chapter1.Hello
build.xml
<?xml version="1.0"?>
<project name="project" default="run">
<property name="run.classpath" value="bin"></property>
<property name="Search.JVM.extra.args" value="-Xincgc"></property>
<target name="compile">
<javac destdir="bin" srcdir="src"></javac>
</target>
<target name="jar" depends="compile">
<jar destfile="test.jar" update="true"
manifest="MANIFEST.MF">
<fileset dir="bin">
<include name="**/*.class"/>
</fileset>
</jar>
</target>
<target name="run" depends="jar">
<java fork="true" maxmemory="64m" jar="test.jar">
<classpath path="${run.classpath}"></classpath>
<jvmarg line="${Search.JVM.extra.args}"/>
<arg value="Ant"/>
<arg file="D:\rag"/>
</java>
</target>
</project>
Buildfile: D:\MyEclipse\workspace\sad\build.xml
compile:
jar:
[jar] Updating jar: D:\MyEclipse\workspace\sad\test.jar
run:
[java] Hello Ant
[java] hello.dat
BUILD SUCCESSFUL
Total time: 875 milliseconds
在某些情況下,我們不希望由于一些不重要的任務(wù)構(gòu)建失敗,而導(dǎo)致整個(gè)構(gòu)建的失敗,所以Ant提供了一個(gè)共同的屬性-failonerror,多數(shù)任務(wù)的默認(rèn)值為failonerror="true",既當(dāng)此任務(wù)構(gòu)建失敗時(shí),失敗信息會傳遞給控制臺,并導(dǎo)致build failed,failonerror只支持在新的JVM里運(yùn)行.
<target name="run" depends="jar">
<java fork="true" maxmemory="64m" jar="test.jar"
failonerror="false" >
<classpath path="${run.classpath}"></classpath>
<jvmarg line="${Search.JVM.extra.args}"/>
<arg value="Ant"/>
<arg file="D:\rag"/>
</java>
</target>
Buildfile: D:\MyEclipse\workspace\sad\build.xml
compile:
jar:
run:
[java] java.lang.NullPointerException
[java] at org.ant.chapter1.Hello.main(Hello.java:27)
[java] Hello Ant
[java] Exception in thread "main"
[java] Java Result: 1
BUILD SUCCESSFUL
Total time: 984 milliseconds
可以看出雖然run構(gòu)建失敗,但是Ant還是執(zhí)行了,原來的jar文件,并且BUILD SUCCESSFUL!!
使用Ant運(yùn)行tomcat
Ant使用<exec>任務(wù)運(yùn)行本地程序,先看一個(gè)例子:
<?xml version="1.0"?>
<project name="project" default="run">
<target name="run">
<exec executable="cmd">
<arg value="/C a.bat"/>
</exec>
</target>
</project>
a.bat
@echo off
echo Hello >> a.txt
運(yùn)行完后,會在根目錄生成a.txt文件,里面內(nèi)容為Hello
下面我們來運(yùn)行tomcat
<?xml version="1.0"?>
<project name="project" default="tomcat-start">
<property name="tomcat.dir" value="c:/Tomcat5"></property>
<target name="tomcat-start">
<exec dir="${tomcat.dir}/bin" executable="cmd">
<env key="CATALINA_HOME" path="${tomcat.dir}"/>
<arg value="/C startup.bat"/>
</exec>
</target> <target name="tomcat-stop">
<exec dir="${tomcat.dir}/bin" executable="cmd">
<env key="CATALINA_HOME" path="${tomcat.dir}"/>
<arg value="/c shutdown.bat"/>
</exec>
</target>
</project>
四.使用Ant進(jìn)行Junit測試
我們除了使用java來直接運(yùn)行junit之外,我們還可以使用junit提供的junit task與ant結(jié)合來運(yùn)行。涉及的幾個(gè)主要的ant task如下:
l         <junit>,定義一個(gè)junit task
l         <batchtest>,位于<junit>中,運(yùn)行多個(gè)TestCase
l         <test>,位于<junit>中,運(yùn)行單個(gè)TestCase
l         <formatter>,位于<junit>中,定義一個(gè)測試結(jié)果輸出格式
l         <junitreport>,定義一個(gè)junitreport task
l         <report>,位于<junitreport>中,輸出一個(gè)junit report
運(yùn)行Junit需要jakarta-ant-1.4-optional.jar和Junit.jar包,因?yàn)檫@兩個(gè)包用于支持ant task--<junit>的,所以不能在build.xml文件中加載,需要將他們放到ANT_HOME中去.使用eclipse可以按照一下步驟加入:
Windows-Preference-Ant-Runtime-Ant Home Entries
下面看一個(gè)Junit測試的例子:
<?xml version="1.0"?>
<project name="project" default="junit">
<property name="run.classpath" value="bin"></property>
<property name="run.srcpath" value="src"></property>
<property name="test.srcpath" value="test"></property>
<property name="lib.dir" value="lib"/>
<path id="compile.path">
<pathelement location="${lib.dir}/junit-3.8.1.jar"/>
<pathelement location="${lib.dir}/log4j-1.2.8.jar"/>
</path>
<target name="compile">
<javac destdir="${run.classpath}" srcdir="${run.srcpath}"
classpathref="compile.path"/>
<javac destdir="${run.classpath}" srcdir="${test.srcpath}"
classpathref="compile.path"/>
</target>
<target name="junit" depends="compile">
<junit printsummary="true">
<classpath path="${run.classpath}"></classpath>
<test name="org.ant.test.Test1"></test>
</junit>
</target>
</project>
可以看出Junit的使用基本和java差不多, printsummary允許輸出junit信息,當(dāng)然Ant提供formatter屬性支持多樣化的junit信息輸出.Ant包含三種形式的formatter:
brief:以文本格式提供測試失敗的詳細(xì)內(nèi)容;
plain:以文本格式提供測試失敗的詳細(xì)內(nèi)容以及每個(gè)測試的運(yùn)行統(tǒng)計(jì);
xml:以xml格式提供擴(kuò)展的詳細(xì)內(nèi)容,包括正在測試時(shí)的Ant特性,系統(tǒng)輸出,以及每個(gè)測試用      例的系統(tǒng)錯(cuò)誤.
使用formatter時(shí)建議將printsummary關(guān)閉,因?yàn)樗赡軐ormatter的生成結(jié)果產(chǎn)生影響,并多生成一份同樣的輸出.當(dāng)然我們可以使用formatter將輸出結(jié)果顯示在console中:
<formatter type="brief" usefile="false"/>
Junit支持多個(gè)formatter同時(shí)存在:
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
使用xml我們可以得到擴(kuò)展性更強(qiáng)的信息輸出,這時(shí)在<test>中要設(shè)定todir來指定xml的輸出路徑.
在通常情況下我們不可能一個(gè)一個(gè)來處理junit,所以Ant提供了<batchtest>,可以在他里面嵌套文件集(fileset)以包含全部的測試用例.
對于大量的用例,使用控制臺輸出,或者使用文件或xml文件來作為測試結(jié)果都是不合適的,Ant提供了<junitreport>任務(wù)使用XSLT將xml文件轉(zhuǎn)換為HTML報(bào)告.該任務(wù)首先將生成的XML文件整合成單一的XML文件,然后再對他進(jìn)行轉(zhuǎn)換,這個(gè)整合的文件默認(rèn)情況下被命名為:TESTS-TestSuites.xml.
<junitreport todir="${test.xml}">
<fileset dir="${test.xml}">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${test.report}"/>
</junitreport>
<report>元素指示轉(zhuǎn)換過程中生成有框架(frames)或者無框架的類似與javadoc格式的文件,并保存到todir所在的目錄下面.(由于xalan對于JDK1.4以上的版本存在問題,所以要生成HTML文件需要以下步驟:現(xiàn)在最新的xalan,在%JAVA_HOME%/jre/lib中建立文件夾endorsed.將xalan中的jar文件copy到里面).
下面看一個(gè)完整的例子:
<?xml version="1.0"?>
<project name="project" default="junit">
<property name="run.classpath" value="bin"></property>
<property name="run.srcpath" value="src"></property>
<property name="test.srcpath" value="test"></property>
<property name="test.xml" value="xml"></property>
<property name="test.report" value="report"></property>
<property name="lib.dir" value="lib"/>
<path id="compile.path">
<pathelement location="${lib.dir}/junit-3.8.1.jar"/>
<pathelement location="${lib.dir}/log4j-1.2.8.jar"/>
</path>
<target name="init">
<delete dir="${test.report}"/>
<mkdir dir="${test.report}"/>
<delete dir="${test.xml}"/>
<mkdir dir="${test.xml}"/>
</target>
<target name="compile" depends="init">
<javac destdir="${run.classpath}" srcdir="${run.srcpath}"
classpathref="compile.path"/>
<javac destdir="${run.classpath}" srcdir="${test.srcpath}"
classpathref="compile.path"/>
</target>
<target name="junit" depends="compile">
<junit printsummary="false">
<classpath path="${run.classpath}"></classpath>
<formatter type="xml"/>
<batchtest todir="${test.xml}">
<fileset dir="${run.classpath}">
<include name="**/Test*.class"/>
</fileset>
</batchtest>
</junit>
<junitreport todir="${test.xml}">
<fileset dir="${test.xml}">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${test.report}"/>
</junitreport>
</target>
</project>
<?xml version="1.0"?>
<project name="project" default="junit">
<property name="run.classpath" value="bin"></property>
<property name="run.srcpath" value="src"></property>
<property name="test.srcpath" value="test"></property>
<property name="test.xml" value="xml"></property>
<property name="test.report" value="report"></property>
<property name="lib.dir" value="lib"/>
<path id="compile.path">
<pathelement location="${lib.dir}/junit-3.8.1.jar"/>
<pathelement location="${lib.dir}/log4j-1.2.8.jar"/>
</path>
<target name="init">
<delete dir="${test.report}"/>
<mkdir dir="${test.report}"/>
<delete dir="${test.xml}"/>
<mkdir dir="${test.xml}"/>
</target>
<target name="compile" depends="init">
<javac destdir="${run.classpath}" srcdir="${run.srcpath}"
classpathref="compile.path"/>
<javac destdir="${run.classpath}" srcdir="${test.srcpath}"
classpathref="compile.path"/>
</target>
<target name="junit" depends="compile">
<junit printsummary="false">
<classpath path="${run.classpath}"></classpath>
<formatter type="xml"/>
<batchtest todir="${test.xml}">
<fileset dir="${run.classpath}">
<include name="**/Test*.class"/>
</fileset>
</batchtest>
</junit>
<junitreport todir="${test.xml}">
<fileset dir="${test.xml}">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${test.report}"/>
</junitreport>
</target>
</project>
生成的文檔:
點(diǎn)擊Properties超鏈接會彈出一個(gè)窗口顯示在測試運(yùn)行時(shí)全部的Ant特性,這對于跟蹤由環(huán)境和配置造成的失敗是非常便利的!
五.使用Ant運(yùn)行本地程序
1.使用Ant運(yùn)行windows的批處理文件
要在Ant內(nèi)運(yùn)行一個(gè)外部程序,應(yīng)使用<exec>任務(wù).它允許你執(zhí)行下列操作:
l         指定程序名和要傳入的參數(shù).
l         命名運(yùn)行目錄.
l         使用failonerror標(biāo)志來控制當(dāng)應(yīng)用程序失敗時(shí)是否停止構(gòu)建.
l         指定一個(gè)最大程序持續(xù)時(shí)間,時(shí)間超過則中止程序.任務(wù)在這時(shí)被認(rèn)為是失敗,但是至少構(gòu)建會中止,而不是掛起,這對于自動構(gòu)建是至關(guān)重要的.
l         將輸出存到一個(gè)文件或特性.
l         指定java調(diào)用本地程序時(shí)需要預(yù)先設(shè)定的環(huán)境變量.
下面來看一個(gè)例子:
批處理文件:
Test.bat
@echo off
echo Hello > test.txt
build.xml
<?xml version="1.0"?>
<project name="batch" default="extract" basedir=".">
<target name="extract">
<exec executable ="cmd">
<arg line="/c a.bat"/>
</exec>
</target>
</project>
使用executable元素標(biāo)記指定使用的命令,具體用法可以在命令行下面輸入help cmd查看.如果你希望在運(yùn)行批處理發(fā)生錯(cuò)誤時(shí)中止構(gòu)建需要設(shè)定failonerror="on".加入你的外部程序在某個(gè)時(shí)刻掛起,也許是在與遠(yuǎn)程站點(diǎn)對話,而你不希望構(gòu)建永遠(yuǎn)被掛起,Ant提供了timeout這個(gè)屬性,他是一個(gè)以毫秒為單位的數(shù)字.下面看一下如何使用Ant來運(yùn)行tomcat.
啟動tomcat需要兩個(gè)環(huán)境變量CATALINA_HOME, JAVA_HOME,如果你在環(huán)境變量中已經(jīng)設(shè)定,在Ant中就不需要進(jìn)行處理,如果沒有需要使用<env>屬性來設(shè)定,你也可以使用<env>屬性覆蓋你以前的環(huán)境變量.
<?xml version="1.0"?>
<project name="batch" default="tomcat-start" basedir=".">
<property name="tomcat.dir" value="C:\Tomcat5"></property>
<target name="tomcat-start">
<exec dir="${tomcat.dir}/bin" executable="cmd">
<env key="CATALINA_HOME" path="${tomcat.dir}"/>
<arg value="/C startup.bat"/>
</exec>
</target>
</project>
2.使用Ant運(yùn)行shell文件
由于windowsXP的cmd默認(rèn)沒有安裝ps,bash等命令,所以我們需要借助的三方的軟件來實(shí)現(xiàn)這個(gè)功能,這里使用cgywin,將cgywin的bin目錄加到環(huán)境變量的Path里面(下面使用Ant運(yùn)行cvs也會用到).
<?xml version="1.0"?>
<project name="batch" default="shell" basedir=".">
<property name="tomcat.dir" value="C:\Tomcat5"></property>
<target name="shell">
<exec dir="${tomcat.dir}/bin" executable="bash">
<env key="CATALINA_HOME" path="${tomcat.dir}"/>
<arg value="startup.sh"/>
</exec>
</target>
</project>
3.使用Ant運(yùn)行cvs
Ant內(nèi)置cvs屬性,可以很方便的使用cvs:
<?xml version="1.0"?>
<project name="batch" default="shell" basedir=".">
<property name="cvs.root" value="..."></property>
<target name="cvs">
<cvs cvsroot="cvs.root" command="checkout ../.."/>
</target>
</project>
如果你的Documents and Settings中有.cvspass文件,那么可以不用設(shè)定cvsroot,Ant會自動尋找.
六.工程的打包部署
工程的打包,主要就是文件的操作,下面通過例子簡單介紹一下文件的移動,復(fù)制和刪除.
<?xml version="1.0"?>
<project name="project" default="jar">
<target name="copy">
<tstamp>
<format property="time.format"                                           pattern="yyyy-mm-dd‘T‘HH:mm:ss"
locale="en"/>
</tstamp>
<copy tofile="dist/readme" file="test.txt">
<filterset>
<filter token="TIME" value="${time.format}"/>
</filterset>
</copy>
</target>
<target name="move">
<move todir="dist">
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
</move>
</target>
<target name="delete" depends="copy,move">
<delete verbose="true" failonerror="false">
<fileset dir="dist">
<include name="*.jar"/>
</fileset>
</delete>
</target>
</project>
需要說明的是文件刪除的時(shí)候可能這個(gè)文件正在被別人是用而無法刪除,所以要用failonerror來標(biāo)記,文件的復(fù)制是時(shí)間戳敏感的,如果拷貝的文件比原文件要老,那么Ant將不會執(zhí)行copy,解決的辦法是將overwrite屬性設(shè)置為true,由于移動文件是復(fù)制文件的一個(gè)子類,所以它們的原理基本相同.
前面已經(jīng)例舉過一個(gè)jar文件打包的例子,下面主要介紹war文件的打包.Ant提供war文件打包的屬性.<war>任務(wù)是<jar>任務(wù)的子類,但是他也提供了一些特有的屬性:
<target name="deploy" depends="init">
<war destfile="${war.dir}/spring.war" webxml="${web.dir}/web.xml" >
<classes dir="${web.dir}/classes"></classes>
<fileset dir="WebContent" excludes="web.xml"></fileset>
<lib dir="${web.dir}/lib"></lib>
</war>
</target>
可以看出war任務(wù)提供了許多WEB應(yīng)用程序的特有屬性,只要你指定了這些文件,war任務(wù)就會自動將他們放到正確的位置.
部署是項(xiàng)目發(fā)布的過程,Ant支持FTP,Email,本地和遠(yuǎn)程等幾種部署模式,但是Ant并不內(nèi)置對一些部署的支持,需要第三方的庫.
optional.jar            也可能是這樣的名字:  jakarta-ant-1.4.1.optional.jar
netcomponents.jar       <ftp>和<telnet>需要
activation.jar                   <mail>需要
mail.jar                           <mail>需要
下面只以本地部署為例,服務(wù)器為tomcat.
由于tomcat支持熱部署,可以將webapp文件下的war文件自解壓縮,所以最簡單的部署方式是將工程打成war包后直接copy到webapp目錄下面.另一種方法是使用tomcat的管理員身份,在manager頁面裝載和刪除應(yīng)用,這種方法比較復(fù)雜,也比較正規(guī),他也是遠(yuǎn)程部署的基礎(chǔ).
<?xml version="1.0"?>
<project name="project" default="deploy-local-catalina">
<property name="war.dir" value="dist"></property>
<property name="web.dir" value="WebContent/WEB-INF"></property>
<property name="webapp.name" value="spring"></property>
<property name="catalina.port" value="8080"></property>
<property name="catalina.username" value="admin"></property>
<property name="catalina.password" value="admin"></property>
<target name="init">
<mkdir dir="${war.dir}"/>
</target>
<target name="mkwar" depends="init">
<war destfile="${war.dir}/spring.war" webxml="${web.dir}/web.xml" >
<classes dir="${web.dir}/classes"></classes>
<fileset dir="WebContent" excludes="web.xml"></fileset>
<lib dir="${web.dir}/lib"></lib>
</war>
</target>
<target name="remove-local-catalina">
<property name="deploy.local.remove.url"
value="http://localhost:${catalina.port}/manager/remove"></property>
<get dest="deploy.local.remove.txt"
src="${deploy.local.remove.url}?path=/${webapp.name}"
username="admin" password="admin"/>
<loadfile property="depoly.local.remove.result"
srcfile="depoly.local.remove.txt"></loadfile>
</target>
<target name="deploy-local-catalina" depends="mkwar, remove-local-catalina">
<property name="deploy.local.urlpath"
value="file:///D:\MyEclipse\workspace\springstruts\dist\spring.war"></property>
<property name="deploy.local.url.params"
value="path=/${webapp.name}&amp;war=${deploy.local.urlpath}"></property>
<property name="deploy.local.url"
value="http://localhost:${catalina.port}/manager/install"></property>
<get src="${deploy.local.url}?${deploy.local.url.params}"
dest="deploy-local.txt"
username="admin"
password="admin"/>
<loadfile property="deploy.local.result"
srcfile="deploy-local.txt"></loadfile>
</target>
</project>
可以看出只要將上面的localhost換成目標(biāo)的ip地址就可以實(shí)現(xiàn)tomcat的遠(yuǎn)程部署.
終于完成了Ant初級的學(xué)習(xí)筆記,感覺到后來沒有什么動力,越寫越亂,很多地方解釋的不清楚,只是給出build文件,然后就一筆帶過,在以后的高級篇中,我會更加努力的!!
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
中文java技術(shù)網(wǎng)::使用ant集成
Hibernate代碼生成初接觸之Middlegen生成hbm文件和java代碼
Apache Ant 簡介
JR 精品文章 - Ant參考教程(一)
學(xué)習(xí)使用apache ant,自己配置的第一個(gè)build.xml文件
Jmeter默認(rèn)報(bào)告優(yōu)化
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服