你可以在你的gradle項目中通過ant.importBuild()來導(dǎo)入一個ant構(gòu)建,當你導(dǎo)入了一個ant構(gòu)建,每一個ant target都會被視為一個Gradle任務(wù).這意味著你可以像操作,執(zhí)行g(shù)radle任務(wù)一樣操作,執(zhí)行ant target
例 16.8.導(dǎo)入ant構(gòu)建
build.gradle
ant.importBuild 'build.xml'
build.xml
<project>
<target name="hello">
<echo>Hello, from Ant</echo>
</target>
</project>
gradle hello的輸出
>\> gradle hello
>:hello
>[ant:echo] Hello, from Ant
>
>BUILD SUCCESSFUL
>
>Total time: 1 secs
你可以添加一個依賴于ant target的任務(wù):
例 16.9.依賴于ant target的任務(wù)
build.gradle
ant.importBuild 'build.xml'
task intro(dependsOn: hello) << {
println 'Hello, from Gradle'
}
gradle intro的輸出- > gradle intro
- hello [ant:echo] Hello, from Ant
- intro Hello, from Gradle
BUILD SUCCESSFUL
Total time: 1 secs
或者,你可以為ant target添加動作
例 16.10.為Ant target添加動作
build.gradle
ant.importBuild 'build.xml'
hello << {
println 'Hello, from Gradle'
}
gradle hello的輸出
- > gradle hello
- hello [ant:echo] Hello, from Ant Hello, from Gradle
BUILD SUCCESSFUL
Total time: 1 secs
當然,一個ant target也可以依賴于gradle的任務(wù)
例 16.11.為Ant target添加動作
build.gradle
ant.importBuild 'build.xml'
task intro << {
println 'Hello, from Gradle'
}
build.xml
<project>
<target name="hello" depends="intro">
<echo>Hello, from Ant</echo>
</target>
</project>
gradle hello的輸出
- > gradle hello
- intro Hello, from Gradle
- hello [ant:echo] Hello, from Ant
BUILD SUCCESSFUL
Total time: 1 secs
有時候可能需要'重命名'ant target以避免與現(xiàn)有的gradle任務(wù)沖突.需要使用[AntBuilder.importBuilder()](https://docs.gradle.org/current/javadoc/org/gradle/api/AntBuilder.html#importBuild(java.lang.Object, org.gradle.api.Transformer))方法.
例 16.12.重命名導(dǎo)入的ant target
build.gradle
ant.importBuild('build.xml') { antTargetName ->
'a-' + antTargetName
}
build.xml
<project>
<target name="hello">
<echo>Hello, from Ant</echo>
</target>
</project>
gradle a-hello的輸出
- > gradle a-hello
- a-hello [ant:echo] Hello, from Ant
BUILD SUCCESSFUL
Total time: 1 secs
注意,方法的二個參數(shù)應(yīng)該是一個TransFormer,在Groovy編程的時候,由于Groovy的支持自動閉包單抽象方法的類型。我們可以簡單地使用閉包取代匿名內(nèi)部類,