gradle ant_区分基于Ant目标的Gradle任务
gradle ant
在我的博客文章《 從Ant Build演變Gradle構(gòu)建:導(dǎo)入Ant構(gòu)建文件》中 ,我演示了如何使用Gradle內(nèi)置的基于AntBuilder的Ant支持在Gradle構(gòu)建中導(dǎo)入Ant目標(biāo)。 然后,可以將這些Ant目標(biāo)作為Gradle任務(wù)進(jìn)行訪問(wèn),并與Gradle構(gòu)建直接引入的任務(wù)相同。 在本文中,我將研究如何使用Groovy區(qū)分基于導(dǎo)入的Ant目標(biāo)的Gradle任務(wù)和Gradle定義的任務(wù)。
由Gradle進(jìn)口Ant構(gòu)建文件建立在我的例子中的這個(gè)帖子在我的介紹以前的帖子 。 該Ant構(gòu)建文件包括目標(biāo)“ -init”,“ clean”,“ compile”,“ jar”,“ javadoc”,“ all”和“ output”。 緊隨build.xml及其Ant目標(biāo)的Gradle構(gòu)建腳本文件。
build-ant-targets-and-gradle-tasks.gradle(版本1)
// build-ant-targets-and-gradle-tasks.gradle // // Gradle build script demonstrating Gradle Tasks associated with this project // that are not provided by an imported Ant build file.// ant is a DefaultAntBuilder instance ant.importBuild 'build.xml'def antTargetsNames = ant.references.get("ant.targets").collect{ it.name } println "\nAnt Targets: ${antTargetsNames}\n"def taskNames = rootProject.tasks.collect{ it.name } println "\nGradle Task Names: ${taskNames}\n"def tasksThatAreNotAntTargets = taskNames - antTargetsNames println "\nGradle Tasks that are NOT Ant Targets: ${tasksThatAreNotAntTargets}\n"隱式可用的“ ant”變量( 默認(rèn)為AntBuilder )首先用于通過(guò)調(diào)用ant.references.get("ant.targets")獲得所有Ant提供的目標(biāo)。 Groovy方便的Collection.collect(Closure)方法在該集合上調(diào)用,以返回Ant目標(biāo)“名稱”的集合。
隱式可用的“ rootProject”也可以用于使用rootProject.tasks在根項(xiàng)目級(jí)別獲取任務(wù)。 在此集合上使用了相同的Groovy Collection.collect(Closure)方法來(lái)獲取Gradle任務(wù)的名稱。 最后,Groovy的減法運(yùn)算符用于輕松確定哪些Gradle Tasks不是Ant Targets。 如上所示運(yùn)行時(shí),所有Gradle任務(wù)都是Ant目標(biāo),因此減法運(yùn)算符不返回任何內(nèi)容。 這顯示在下一個(gè)屏幕快照中。
為了使示例更有趣,我在上面顯示的G??radle構(gòu)建文件中添加了幾個(gè)Gradle引入的Tasks。 接下來(lái)顯示具有兩個(gè)新的Gradle引入的任務(wù)的新版本。
build-ant-targets-and-gradle-tasks.gradle(版本2)
// build-ant-targets-and-gradle-tasks.gradle // // Gradle build script demonstrating Gradle Tasks associated with this project // that are not provided by an imported Ant build file.// ant is a DefaultAntBuilder instance ant.importBuild 'build.xml'task(helloWorld) << {println "Hello, World!" }task(currentDateTime) << {println new Date() }def antTargetsNames = ant.references.get("ant.targets").collect{ it.name } println "\nAnt Targets: ${antTargetsNames}\n"def taskNames = rootProject.tasks.collect{ it.name } println "\nGradle Task Names: ${taskNames}\n"def tasksThatAreNotAntTargets = taskNames - antTargetsNames println "\nGradle Tasks that are NOT Ant Targets: ${tasksThatAreNotAntTargets}\n"Gradle構(gòu)建腳本的修訂版引入了兩個(gè)自己的任務(wù)(“ helloWorld”和“ currentDateTime”)。 運(yùn)行此腳本的輸出包括這兩個(gè)新的Gradle任務(wù),這些不是Grails任務(wù),而是Ant引入的基于目標(biāo)的Gradle任務(wù)。 接下來(lái)顯示此輸出。
 這篇文章中的示例提供了其他示例,這些示例能夠使用Groovy代碼更好地理解Gradle構(gòu)建的優(yōu)勢(shì)。 可以直接訪問(wèn)默認(rèn)的Ant Builder實(shí)例(“ ant”)和“ rootProject”以獲取所有基于Ant的Gradle任務(wù)以及所有任務(wù)(基于Ant或Gradle引入)的名稱。 
翻譯自: https://www.javacodegeeks.com/2014/01/differentiating-ant-target-based-gradle-tasks.html
gradle ant
總結(jié)
以上是生活随笔為你收集整理的gradle ant_区分基于Ant目标的Gradle任务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: Java:以CSV格式流式传输JDBC结
- 下一篇: 使用Gradle构建Monorepo项目
