## 1.在gradle使用ant
~~~
task hello << {
String greeting = 'hello ant'
ant.echo(message:greeting)
}
~~~
使用的是ant中的echo任務執行打印信息
~~~
qianhuis-Mac-mini:0112 qianhui$ gradle hello
:hello
[ant:echo] hello ant
BUILD SUCCESSFUL
Total time: 2.629 secs
~~~
上面是使用嵌套的方法傳遞信息個 ant,現在直接傳遞試試
~~~
task hello << {
ant.echo("Hello ant")
}
~~~
~~~
qianhuis-Mac-mini:0112 qianhui$ gradle hello
:hello
[ant:echo] Hello ant
BUILD SUCCESSFUL
Total time: 3.556 secs
~~~
你還可以個 ant任務傳遞閉包代碼塊:
~~~
task zip << {
ant.zip(destfile:'archive.zip'){
fileset(dir:'src'){
include(name:'**.xml')
exclude(name:'**.java')
}
}
}
~~~
將src下的文件打包成archive.zip壓縮包,只打包xml文件,不打包java文件。
先在src下隨便建幾個xml文件,執行命令:
~~~
qianhuis-Mac-mini:0112 qianhui$ gradle zip
:zip
BUILD SUCCESSFUL
Total time: 2.801 secs
~~~
會在根目錄下生成了一個壓縮文件:

## 2.ant類型
操作ant.path對象。
~~~
task list << {
def path = ant.path{
fileset(dir:'libs',includes:'*.jar')
}
path.list().each{
println it
}
}
~~~
~~~
qianhuis-Mac-mini:0112 qianhui$ gradle list
:list
/Users/qianhui/Documents/Developer/gradle_project/0112/libs/1.jar
BUILD SUCCESSFUL
Total time: 2.943 secs
~~~
## 3.使用自定義的ant任務
使用taskdef或者typedef關鍵字來自定義任務,與你在build.xml中是一樣的效果。
~~~
task check <<{
ant.taskdef(name:'pmd',
classname:'net.sourceforge.pmd.ant.PMDTask',
classpath:configurations.pmd.asPath)
ant.pmd(shortFilenames:'true',
failonruleviolation:'true',
rulesetfiles:file('pmd-rules.xml').toURI.toString()){
formatter(type:'text',toConsole:'true')
fileset(dir:'src')
}
}
configurations{
pmd
}
dependencies{
pmd group:'pmd',name:'pmd',version:'4.2.5'
}
~~~
## 4.導入ant的構建腳本build.xml
#### 包含ant腳本
大家都知道ant的構建腳本是 build.xml文件,但是你不知道的是gradle可以包含該build.xml能解析里面的信息。看gradle是如何做的:
首先生成一個build.xml? 文件:
~~~
<project>
<target name="hello">
<echo>Hello, from Ant</echo>
</target>
</project>
~~~
build.gradle包含該xml文件:
~~~
ant.importBuild 'build.xml'
~~~
執行命令,我們執行build.xml中定義的hello任務試試:
~~~
qianhuis-Mac-mini:0112 qianhui$ gradle hello
:hello
[ant:echo] Hello, from Ant
BUILD SUCCESSFUL
Total time: 2.775 secs
~~~
嘿,還真的可以。
#### 添加依賴
既然可以將ant的任務當成gradle的任務,那么我們添加一個依賴試試:
~~~
ant.importBuild 'build.xml'
task intro(dependsOn:hello) << {
println 'Hello,from gradle'
}
~~~
執行任務試試
~~~
qianhuis-Mac-mini:0112 qianhui$ gradle intro
:hello
[ant:echo] Hello, from Ant
:intro
Hello,from gradle
BUILD SUCCESSFUL
Total time: 3.726 secs
~~~
一樣可以。
#### 使用task behaviour
~~~
ant.importBuild 'build.xml'
task intro(dependsOn:hello) << {
println 'Hello,from gradle'
}
hello <<{
println 'Hello,from gradle'
}
~~~
~~~
qianhuis-Mac-mini:0112 qianhui$ gradle hello
:hello
[ant:echo] Hello, from Ant
Hello,from gradle
BUILD SUCCESSFUL
Total time: 3.704 secs
~~~
一樣有效果。
#### 在ant腳本中添加依賴
我們還可以在build.xml中依賴我們在build.gradle 中定義的任務。修改build.xml文件:
~~~
<project>
<target name="hello" depends="intro">
<echo>Hello, from Ant</echo>
</target>
</project>
~~~
修改build.gradle
~~~
ant.importBuild 'build.xml'
task intro << {
println 'Hello,from gradle'
}
hello <<{
println 'Hello,from gradle'
}
~~~
執行命令:
~~~
qianhuis-Mac-mini:0112 qianhui$ gradle hello
:intro
Hello,from gradle
:hello
[ant:echo] Hello, from Ant
Hello,from gradle
BUILD SUCCESSFUL
Total time: 2.713 secs
~~~
#### 修改build.xml中target名稱
build.xml
~~~
<project>
<target name="hello" >
<echo>Hello, from Ant</echo>
</target>
</project>
~~~
build.gradle
~~~
ant.importBuild ('build.xml'){
antTargetName ->'a-'+antTargetName
}
task intro << {
println 'Hello,from gradle'
}
~~~
這個時候執行命令一定要在hello前加a-
~~~
qianhuis-Mac-mini:0112 qianhui$ gradle a-hello
:a-hello
[ant:echo] Hello, from Ant
BUILD SUCCESSFUL
Total time: 3.631 secs
~~~
- 前言
- gradle學習(1)-helloworld
- gradle學習(2)-基礎語法
- gradle學習(3)-基礎認識
- gradle學習(4)-構建java項目
- gradle學習(5)-創建eclipse項目
- gradle學習(6)-依賴管理
- gradle學習(7)-groovy
- gradle學習(8)-gradle的命令行
- gradle學習(9)-獲取build相關信息
- gradle學習(10)-gui
- gradle學習(11)-編寫構建腳本
- gradle學習(12)-groovy一些基礎語法
- gradle學習(13)-有的沒的
- gradle學習(14)-任務
- gradle學習(15)-任務
- gradle學習(16)-操作文件
- gradle學習(17)-被合并的ant
- gradle學習(18)-ant的屬性
- gradle學習(19)-log系統
- gradle學習(20)-詳解java插件
- gradle學習(21)-在eclipse中構建java項目
- gradle復習(1)-2種定義任務方式的區別
- gradle復習(2)-eclipse中添加依賴jar包
- gradle復習(3)-在gradle項目中使用TestNG
- gradle復習(4)-Cannot find System Java Compiler
- gradle復習(5)-Test remote debug
- gradle復習(6)-深入Jacoco
- gradle復習(7)-深入Jacoco
- gradle復習(8)-Task中行為
- gradle學習(22)-Sonar
- gradle學習(23)-Sonar runner