gradle学习(17)-被合并的ant

最后更新于:2022-04-01 06:51:57

## 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 ~~~ 会在根目录下生成了一个压缩文件: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-07_568e4667dbff5.jpg) ## 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 ~~~
';