没有显式taskdef的ant文件中的Groovy任务?

时间:2016-01-29 21:24:32

标签: groovy ant

免责声明:Ant Noob!

我试图让这个常规任务在蚂蚁中运行。到目前为止工作:

<project>
  <taskdef name="groovy"
         classname="org.codehaus.groovy.ant.Groovy"
         classpath="C:/Local/groovy-2.4.5/lib/groovy-ant-2.4.5.jar;C:/Local/groovy-2.4.5/lib/groovy-2.4.5.jar"/>

  <echo message="Hello!"/>
  <groovy>
    println "Hello from Groovy!"
  </groovy>
</project>

我无法落后(甚至阅读this及相关条目)是我需要对我的Ant安装(Windows)进行的操作,以使脚本像这样运行,而不需要{{1在我的项目特定构建文件中的任何其他引用:

taskdef

1 个答案:

答案 0 :(得分:1)

您需要将所有Groovy依赖项(groovy-ant.jargroovy.jar等)放在Ant读取的类路径上。最简单的方法是将它们存储在 ANT_HOME / lib下。或者您可以使用命令行上的-lib选项传递它们。

然后你仍然需要告诉Ant关于antlib的路径。您可以使用documentation page中描述的antlib命名空间机制。您在命名空间URI中指定包含antlib.xml的包,在本例中为org.codehaus.groovy

<project xmlns:groovy="antlib:org.codehaus.groovy">
   <echo message="Hello!"/>
   <groovy:groovy>
      println "Hello from Groovy!"
   </groovy:groovy>
</project>

请注意,如果在 ANT_HOME / lib中放置了Jar文件(及其依赖项),您仍然可以使用taskdef 而不引用Jar文件。您只需引用Jar中antlib资源的路径。在这种情况下,您可以不使用名称空间URI:

<project>
    <taskdef resource="org/codehaus/groovy/antlib.xml"/>
    <echo message="Hello!"/>
    <groovy>
        println "Hello from Groovy!"
    </groovy>
</project>