ant腳本教程
內容摘要:
ANT是一個基於Java的自動化腳本引擎,腳本格式為XML。除了做Java編譯相關任務外,ANT還可以通過插件實現很多應用的調用。
1)ANT的基本概念:
2)ANT的安裝:解包,設置路徑
3)ANT的使用:最好的學習只不過是一個簡單實用的例子起步……
ANT的基本概念:Java的Makefile
當一個代碼項目大了以後,每次重新編譯,打包,測試等都會變得非常復雜而且重復,因此c語言中有make腳本來幫助這些工作的批量完成。在Java中應用是平台無關性的,當然不會用平台相關的make腳本來完成這些批處理任務了,ANT本身就是這樣一個流程腳本引擎,用於自動化調用程序完成項目的編譯,打包,測試等。除了基於JAVA是平台無關的外,腳本的格式是基於XML的,比make腳本來說還要好維護一些。
每個ant腳本(預設叫build.xml)中設置了一系列任務(target):比如對於一個一般的項目可能需要有以下任務。
任務1:usage 列印本腳本的幫助信息(預設)
任務2:clean <-- init 清空初始化環境
任務3:javadoc <-- build <-- init 生成JAVADOC
任務4:jar <-- build <-- init 生成JAR
任務5:all <-- jar + javadoc <-- build <-- init 完成以上所有任務:jar javadoc
而多個任務之間往往又包含了一定了依賴關系:比如把整個應用打包任務(jar)的這個依賴於編譯任務(build),而編譯任務又依賴於整個環境初始化任務(init)等。
註:我看到很多項目的ant腳本中的命名基本上都是一致的,比如:編譯一般叫build或者compile;打包一般叫jar或war;生成文檔一般命名為javadoc或javadocs;執行全部任務all。在每個任務的中,ANT會根據配置調用一些外部應用並配以相應參數執行。雖然ANT可調用的外部應用種類非常豐富,但其實最常用的就2,3個:比如javac javadoc jar等。
ANT的安裝
解包後在系統可執行路徑中加入指向ant的bin的路徑就可以了,比如可以在GNU/Linux上把以下配置加入/etc/profile中:
export ANT_HOME=/home/ant
export JAVA_HOME=/usr/java/j2sdk1.4.1
export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin
這樣執行ant 後,如果不指定配置文件ant會預設找build.xml這個配置文件,並根據配置文件執行任務,預設的任務設置可以指向最常用的任務,比如:build,或指向列印幫助信息:usage,告訴用戶有那些腳本選項可以使用。
ANT的使用
最好的學習過程就是看懂那些open source項目中的build.xml腳本,然後根據自己的需要簡化成一個更簡單的,ANT和APACHE上很多非常工程派的項目:簡單易用,而且適應性非常強,因為這些項目的建立往往來源於開發人員日常最直接的需求。
❷ ant 腳本中如何設置jdk的路徑
方法1:
直接修改ANT的運行文件:ant.bat ,設置JAVA_HOME,這樣所有的ANT都使用設定的JDK也是一種方法; 我以前做Jetty也是這么做的,挺方便;
方法2:
<javac srcdir="${src}"
destdir="${build}"
fork="yes"
executable="/opt/java/jdk1.1/bin/javac"
compiler="javac1.5"
/>
這樣就可以制定特定的java編譯器了
❸ 用ant腳本執行sql語句
兩步即可:
1.將執行sql語句的命令寫在一個 xx.bat文件裡面
2.在build.xml腳本里 使用 exec標簽來執行bat文件即可
例如:<exec executable=" xx.bat" ></exec>
你們資料庫是什麼資料庫呢?如果是oracle資料庫,那麼執行sql語句的命令是用 sqlplus user/pwd@db example.sql
關於ant腳本標簽,請參考:http://hi..com/woxfy/blog/item/8359887a281899fe0ad1878d.html
❹ android studio能直接運行ant腳本嗎
一、Ant插件的安裝
由於之前我安裝過IntellijIdea,所以我就用一個比較偷懶的方式,直接從那兒復制插慧辯件過來啦:
然後,將這個文件夾復制到AndroidStudio裡面的plugin目錄下:
大功告成了,現前猜缺在可以直接在AndroidStudio中使用ant腳本了。
二、運行ant腳本
在Android項目下新建一個build.xml文件如下:
各個項目的路徑和jar包路徑之類的,改成自己的就可以兆啟成功了
之前由於沒有指定子工程的jar文件路徑,編譯javac的時候就會報下面這個錯誤:
Compile failed; see the compiler error output for details.
at org.apache.tools.ant.taskdefs.Javac.compile(Javac.Java:1150)
at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:912)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
指定後就編譯成功了。
❺ 如何使用Ant腳本編譯出Jar和Apk包
首先我們來看看如何使用ant腳本打出一個jar包 我們新建一個工程AntExportJar 在工程的目錄下面新建一個build.xml,這個是ant腳本規定的一個入口腳本文件,文件名都是:build.xml [html] view plain ?
<?xml version ="1.0" encoding ="UTF-8" ?>
<project name ="AntExportJar" basedir ="." default ="exportJar" >
????<!--?設置全局變數?-->
????<property name ="src" value ="src" />
????<property name ="dist" value ="dist" />
????<property name ="app.name" value ="ant" />
????<property name ="app.version" value ="1.0" />
????<property name ="classes.encode" value ="GBK" />
????<property name ="lib" value ="libs" />
????<property
????????name ="project-dir"
????????value ="C:\Users\i\workspace\AntExportJar" />
????<property
????????name ="sdk-folder"
????????value ="C:\Users\i\AppData\Local\Android\sdk" />
????<property
????????name ="platform-folder"
????????value ="${sdk-folder}\platforms\android-22" />
????<property
????????name ="android-jar"
????????value ="${platform-folder}\android.jar" />
????<property
????????name ="src"
????????value ="${project-dir}\src" />
????<property
????????name ="bin"
????????value ="${project-dir}\bin" />
????<property
????????name ="libs"
????????value ="${project-dir}\lib" />
????<!--?task?-->
????<target name ="init" >
????????<echo>
????????????Initialize...
????????</echo>
????????<delete dir ="${bin}" />
????????<mkdir dir ="${bin}" />
????</target>
????<target name ="buildFiles" depends ="init" >
????????<javac
????????????????bootclasspath ="${android-jar}"
????????????????compiler ="javac1.7"
????????????????target ="1.7"
????????????????destdir ="${bin}"
????????????????encoding ="GBK"
????????????????includeAntRuntime ="true"
????????????????listfiles ="true" >
????????????????<src path ="${project-dir}" />
????????????????<classpath>
?????????????????????<!--?引用第三方jar包需要引用,用於輔助編譯,並沒有將jar打包進去。jar的打包在dex命令中。-->
?????????????????????<fileset dir ="${libs}" includes ="*.jar" />
????????????????</classpath>
????????</javac>
????</target>
????<!--?導出jar文件?-->
????<target name ="exportJar" depends ="buildFiles" >
????????<delete dir ="${dist}" />
????????<!--?Create?the?distribution?directory?-->
????????<mkdir dir ="${dist}" />
????????<!--?Put?everything?in?${classes}?into?the?MyProject-${DSTAMP}.jar?file?-->
????????<jar jarfile ="${dist}/${app.name}.jar" basedir ="${bin}" >
????????????<!--
????????????<fileset?dir="${libs}"?includes="**/*.jar"?/>
????????????-->
????????????<zipfileset excludes ="META-INF/*.SF" src ="${libs}/Bai_NativeAd_SDK.jar" />
????????????<zipfileset excludes ="META-INF/*.SF" src ="${libs}/gdt_mob_release.jar" />
????????</jar>
????</target>
</project>
腳本很簡單,下面我們就來分析一下: [html] view plain ?
<project name ="AntExportJar" basedir ="." default ="exportJar" >
最外圍的一個標簽是project,是一個工程標簽,有名字,還有就是工程的目錄baseDir,用點號:"." 接下來就是定義全局變數,或者是屬性值: [html] view plain ?
<!--?設置全局變數?-->
<property name ="src" value ="src" />
<property name ="dist" value ="dist" />
<property name ="app.name" value ="ant" />
<property name ="app.version" value ="1.0" />
<property name ="classes.encode" value ="GBK" />
<property name ="lib" value ="libs" />
<property
????name ="project-dir"
????value ="C:\Users\i\workspace\AntExportJar" />
<property
????name ="sdk-folder"
????value ="C:\Users\i\AppData\Local\Android\sdk" />
<property
????name ="platform-folder"
????value ="${sdk-folder}\platforms\android-22" />
<property
????name ="android-jar"
????value ="${platform-folder}\android.jar" />
<property
????name ="src"
????value ="${project-dir}\src" />
<property
????name ="bin"
????value ="${project-dir}\bin" />
<property
????name ="libs"
????value ="${project-dir}\lib" />
這樣我們在後面就可以使用:${name值} 來使用value值的定義了,所以這里就相當於定義了變數的作用,這里我們看到有一些value值是路徑,但是這里我們感覺有一個不好的地方,就是這些路徑是寫死的,那麼我們還可以怎麼做能讓他變得靈活呢?其實很簡單,ant腳本中是可以訪問環境變數的,那麼我們只要將這些路徑定義成環境變數就可以了: [html] view plain ?
<property environment ="env" />
<property name ="ANDROID_HOME" value ="${env.ANDROID_HOME}" />
第一行先申明一個環境變數值,這個env是公共的寫法,也是ant自帶的,他表示當前的環境變數的值,那麼後面就可以訪問具體的哪些環境變數了,比如這里我配置了ANDROID_HOME這個環境變數,那麼就可以用${env.ANDROID_HOME}來訪問androidsdk的目錄了,和上面的那個直接使用絕對路徑的方式是一樣的。 解析來就是定義task了,在ant中task也是最重要的,我們最終運行的都是task,就相當於Java中的main方法一樣。ant腳本中可以定義多個task,而且每個task可以有執行的先後順序的。相當於Java中的方法中調用其他方法一樣。 [html] view plain ?
<!--?task?-->
<target name ="init" >
????<echo>
????????Initialize...
????</echo>
????<delete dir ="${bin}" />
????<mkdir dir ="${bin}" />
</target>
首先這里定義了一個初始化的task,其中echo標簽也是很常用的,就是列印信息的,然後是刪除目錄${bin},這個bin變數在上面已經定義了,然後在創建${bin}目錄。 初始化完之後,開始執行編譯工作: [html] view plain ?
<target name ="buildFiles" depends ="init" >
????<javac
????????bootclasspath ="${android-jar}"
????????compiler ="javac1.7"
????????target ="1.7"
????????destdir ="${bin}"
????????encoding ="GBK"
????????includeAntRuntime ="true"
????????listfiles ="true" >
????????<src path ="${project-dir}" />
????????????<classpath>
????????????????<!--?引用第三方jar包需要引用,用於輔助編譯,並沒有將jar打包進去。jar的打包在dex命令中。-->
????????????????<fileset dir ="${libs}" includes ="*.jar" />
????????????</classpath>
????</javac>
</target>
這里在此定義一個buildFiles的task,depends的值是表示當前的task在這個depends的task執行完之後在執行,這里就是先執行init的task,然後在執行buildFiles的task,這里的task主要是編譯Java成class文件: bootclasspath:表示編譯依賴的系統庫,這里依賴的是android.jar compiler:表示編譯的java版本 target:表示編譯之後的class的版本,就是能夠運行的java版本 destDir:表示編譯之後的class文件的存放目錄 其他的就不說了,這里還有一個重點,也就是我們在編譯的時候會遇到的問題,就是我們在編譯的時候,會引用到第三發的jar,所以這里我們為了保證能夠編譯過,這里還必須用classpath標簽來引用這些jar,當然這里只是能夠保證編譯通過,並不會把這些jar也編譯到最終我們想要的jar中,這個問題我們後面再說。 下面在看最後的一個task,就是將編譯完之後的class文件打包成jar文件: [html] view plain ?
<!--?導出jar文件?-->
<target name ="exportJar" depends ="buildFiles" >
????<delete dir ="${dist}" />
????<!--?Create?the?distribution?directory?-->
????<mkdir dir ="${dist}" />
????<!--?Put?everything?in?${classes}?into?the?MyProject-${DSTAMP}.jar?file?-->
????<jar jarfile ="${dist}/${app.name}.jar" basedir ="${bin}" >
????????<!--
????????<fileset?dir="${libs}"?includes="**/*.jar"?/>
????????-->
????<zipfileset excludes ="META-INF/*.SF" src ="${libs}/Bai_NativeAd_SDK.jar" />
????<zipfileset excludes ="META-INF/*.SF" src ="${libs}/gdt_mob_release.jar" />
????</jar>
</target>
這里我們定義了一個exportJar的task,他是在buildFiles的task運行完之後在運行。 首先刪除目標目錄${dist},然後在創建一個目錄。這個目錄就是存放最後編譯好的jar文件的目錄 然後就是用jar標簽來導出jar文件了: jarfile:表示編譯完之後存放的jar文件名路徑 basedir:表示需要編譯jar的class文件目錄 其他就OK了,但是在實際中我們在編譯的過程中會引用到第三方的jar,那麼這時候我們把這些jar編譯到最終的jar中,說道這里,其實我們在使用Eclipse導出jar的時候,有一個插件可以做到這點:fat-jar,安裝完插件
❻ 如何在Jenkins Ant腳本中使用正則表達式
方法/步驟
1
下載並安裝一個Jenkins伺服器,它是開源的,可以從如下地址了解並下載安裝(如圖):
https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins
2
進入Jenkins伺服器磁碟系統,新建一個文件夾,並在裡面建立兩個文件(如圖):
1. CmdOutput.txt 文件,存放測試數據的一個文件;
2. BuildTest.xml 文件,用來執行構建的ant腳本文件。
3
打開 CmdOutput.txt 文件,輸入類似如下的測試數據(如圖):
RunTest output: Begin to start TestExecute/TestComplete Instance on remote computer ...*
TestExecute.TestExecuteApplication.10
Begin to open TestExecute/TestComplete project suite on remote computer ...*
2
後面的Ant腳本將會先載入讀取這個文件的內容,然後把最後一行的返回代碼「2」提取出來.
4
打開 BuildTest.xml 文件,輸入如下的Ant腳本(如圖)。裡面將會使用propertyregex來提取返回代碼,其中property用來指定提取到的值存放在什麼屬性裡面,input用來指定匹配來源,regexp用來指定正則表達式,select用來指定選擇哪個匹配子項,casesensitive指定是否區分大小寫。:
<project name="hello" basedir="." default="Test" xmlns:props="antlib:org.apache.ant.props">
<property environment="JenkinsEnv"/>
<!--
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="${JenkinsEnv.ANT_HOME}\\ant-contrib.jar"/>
</classpath>
</taskdef>
-->
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="${JenkinsEnv.ANT_HOME}\\ant-contrib.jar"/>
</classpath>
</taskdef>
<typedef uri="antlib:org.apache.ant.props"
resource="org/apache/ant/props/antlib.xml"
classpath="${JenkinsEnv.ANT_HOME}\\ant-props-1.0Alpha.jar" />
<propertyhelper>
<props:nested/>
</propertyhelper>
<!-- *********************************************** -->
<target name="GetReturnCode">
<loadfile property="CmdOutput" srcFile="CmdOutput.txt"/>
<echo message="CmdOutput: ${CmdOutput}" />
<propertyregex property="ResultCode"
input="${CmdOutput}"
regexp="^([\s\S]*)(\r?\n)+(\d{1,})(\r?\n)*"
select="\3"
casesensitive="false" />
<echo message="ResultCode: ${ResultCode}" />
</target>
</project>
5
在Jenkins伺服器上建立一個TEST的Job,然後點擊配置按鈕(如圖):
6
在構建的標簽處,添加一個Invoke Ant,然後分別輸入要構建的Ant腳本文件,和要跑的任務Target(如圖):
7
點擊保存按鈕保存上一步做的配置,然後點擊Build Now按鈕開始構建Job(如圖):
8
構建完畢之後,把滑鼠放到構建記錄上面,點擊下拉箭頭,彈出菜單中選擇「Console Output」查看控制台輸出(如圖):
9
結果頁面中,前面 CmdOutput.txt 文件中的返回代碼「2」被提取並顯示出來了(如圖):
http://jingyan..com/article/380abd0a6c6e7d1d90192cb4.html
❼ 如何用ant執行jmeter腳本
1、下載ant
2、配置環境變數
以windows下配置為例
①配置ant環境變數
ANT_HOME=D:Program Filesapache-ant-1.10.0
CLASSPATH=%ANT_HOME%lib
Path=%ANT_HOME%in
②檢查ant是否配置成功:命令行輸入ant -version
3、將JMeter的extras目錄中ant-jmeter-1.1.1.jar包拷貝至ant安裝目錄下的lib目錄中
4、修改JMeter的bin目錄下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml
5、新建一個腳本存放目錄,以及報告存放目錄report,將*.jmx(已經調試OK的腳本)拷貝此目錄
6、在創建的目錄下新建一個build.xml文件(ant自動構建文件)
7、cmd進入腳本上面創建的目錄。(即build.xml所在的目錄)
8、輸入:ant 或 ant run(run為build.xml中的task名),即可執行腳本並生成報告
❽ ant腳本如何獲取cmd腳本中設置的變數值
env.xml 代碼如下
代碼:
<?xml version="1.0"?>
<project name="project" default="build">
<property environment="env"/>
<property name="build_number" value="${env.BUILD_NUMBER}"/>
<target name="build" description="Get the build number from windows environment variables">
<echo message="Build Number is ${build_number}" level="info"/>
</target>
</project>首先要在windows 環境變數中設置這個值,然後就可以用 ant 獲得。
運行結果如下:
引用:
C:\Documents and Settings\scmroad\Desktop\Ant_Script>set BUILD_NUMBER=9999
C:\Documents and Settings\scmroad\Desktop\Ant_Script>ant -f env.xml
Buildfile: env.xml
build:
[echo] Build Number is 9999
BUILD SUCCESSFUL
Total time: 0 seconds
C:\Documents and Settings\scmroad\Desktop\Ant_Script>
C:\Documents and Settings\scmroad\Desktop\Ant_Script>set BUILD_NUMBER=8888
C:\Documents and Settings\scmroad\Desktop\Ant_Script>ant -f env.xml
Buildfile: env.xml
build:
[echo] Build Number is 8888
BUILD SUCCESSFUL
Total time: 0 seconds
C:\Documents and Settings\scmroad\Desktop\Ant_Script>
❾ 透過ant腳本,編譯打包android工程怎麼解決
通過ant腳本,編譯打包android工程方法步驟如下:
1.Android程序編譯、打包、簽名、發布的三種方式:
方式一:命令行手動編譯打包
方式二:使用ant自動編譯打包
方式三:使用eclipse+ADT編譯打包
2.Android編譯、打包的步驟:
2.1第一步 生成R.java類文件:
Eclipse中會自動生成頃段R.java,ant和命令行使用android SDK提供的aapt.ext程序生成R.java。
2.2第二步 將.aidl文件生成.java類文件:
Eclipse中自動生成,ant和命令行使用android SDK提供的aidl.exe生成.java文件。
2.3第三步 編譯.java類文件生成class文件:
Eclipse中自動生成,ant和命令行使用jdk的javac編譯java類文件生成class文件。
2.4第四步 將class文件打包生成classes.dex文件:
Eclipse中自動宴猛生成,ant和命令行使用android SDK提供的dx.bat命令行腳本生成classes.dex文件。
2.5第五步 打包資源文件(包括res、assets、androidmanifest.xml等):
Eclipse中自動生成,ant和命令行使用Android SDK提供的aapt.exe生成資源包文件。
2.6第六步 生成未簽名的apk安裝文件:
Eclipse中自動生成debug簽名文件存放在bin目錄中,ant和命令行使用android SDK提供的apkbuilder.bat命令腳本生成未簽名的apk安裝文件。
2.7第七步 對未簽名的apk進行簽名生成簽名後的android文件:
Eclipse中使用Android Tools進行簽名,ant和命令行使用jdk的jarsigner對未簽名的包進行apk簽名。
這個ant腳本只能編譯打包一個晌乎橋單獨的android工程或依賴一個library 的android工程
首先配置ant的環境變數,這個我就不多少了,自己查。
❿ Java的Ant文件是什麼如何創建
Ant是一種基於Java的構建工具。Ant文件是御沒配置構建目標過程的XML文件,也稱為Ant腳本。
使用普通文本編輯工具可以創建,其內容主要由<project>和<target>標簽組成,以下是一個簡單的腳本:
<?xml version="1.0" encoding="utf-8"?>
<project default="run">
<target name="run">
<echo>Hello World!</echo>橘拆前
</圓清target>
</project>