gradle ant_区分基于Ant目标的Gradle任务
gradle ant
在我的博客文章《 從Ant Build演變Gradle構建:導入Ant構建文件》中 ,我演示了如何使用Gradle內置的基于AntBuilder的Ant支持在Gradle構建中導入Ant目標。 然后,可以將這些Ant目標作為Gradle任務進行訪問,并與Gradle構建直接引入的任務相同。 在本文中,我將研究如何使用Groovy區分基于導入的Ant目標的Gradle任務和Gradle定義的任務。
由Gradle進口Ant構建文件建立在我的例子中的這個帖子在我的介紹以前的帖子 。 該Ant構建文件包括目標“ -init”,“ clean”,“ compile”,“ jar”,“ javadoc”,“ all”和“ output”。 緊隨build.xml及其Ant目標的Gradle構建腳本文件。
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”變量( 默認為AntBuilder )首先用于通過調用ant.references.get("ant.targets")獲得所有Ant提供的目標。 Groovy方便的Collection.collect(Closure)方法在該集合上調用,以返回Ant目標“名稱”的集合。
隱式可用的“ rootProject”也可以用于使用rootProject.tasks在根項目級別獲取任務。 在此集合上使用了相同的Groovy Collection.collect(Closure)方法來獲取Gradle任務的名稱。 最后,Groovy的減法運算符用于輕松確定哪些Gradle Tasks不是Ant Targets。 如上所示運行時,所有Gradle任務都是Ant目標,因此減法運算符不返回任何內容。 這顯示在下一個屏幕快照中。
為了使示例更有趣,我在上面顯示的G??radle構建文件中添加了幾個Gradle引入的Tasks。 接下來顯示具有兩個新的Gradle引入的任務的新版本。
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構建腳本的修訂版引入了兩個自己的任務(“ helloWorld”和“ currentDateTime”)。 運行此腳本的輸出包括這兩個新的Gradle任務,這些不是Grails任務,而是Ant引入的基于目標的Gradle任務。 接下來顯示此輸出。
這篇文章中的示例提供了其他示例,這些示例能夠使用Groovy代碼更好地理解Gradle構建的優勢。 可以直接訪問默認的Ant Builder實例(“ ant”)和“ rootProject”以獲取所有基于Ant的Gradle任務以及所有任務(基于Ant或Gradle引入)的名稱。
翻譯自: https://www.javacodegeeks.com/2014/01/differentiating-ant-target-based-gradle-tasks.html
gradle ant
總結
以上是生活随笔為你收集整理的gradle ant_区分基于Ant目标的Gradle任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java:以CSV格式流式传输JDBC结
- 下一篇: 使用Gradle构建Monorepo项目