从ANT脚本运行Groovy类

时间:2013-08-13 18:57:46

标签: groovy

我有以下ANT脚本:

<taskdef name="groovy"
    classpath="${antLib}/groovy-all-2.1.3.jar"
    classname="org.codehaus.groovy.ant.Groovy" />

<!--<taskdef resource="net/sf/antcontrib/antcontrib.properties">
    <classpath>
        <pathelement location="${antLib}/ant-contrib-0.3.jar"/>
    </classpath>
</taskdef>-->

<target name="checkout">
        <groovy src="src/name/of/plugin/Checkout.groovy">
            def checkoutClass = new Checkout()
            checkoutClass.init = {-> true}
            <arg line="pom.xml"/>
            <arg line="${svn.root}"/>
            <arg line="${svn.project.dir}"/>
            <arg line="${env.WORKSPACE}"/>
            <arg line="${svnLib}"/>
        </groovy>
</target>

我正在尝试从Eclipse运行此脚本,因为您可以看到脚本正在调用Groovy类。当我执行这个脚本时,我得到的消息是构建文件成功执行并且运行1秒,这告诉我该类没有被执行。

我的课程如下:

public class Checkout{
def pomFile
def svnRoot
def svnProjectDir
def jenkinsWorkspace
def libDir
def queryFile
def ant

public static void main(String[] args) {
    pomFile = args[0]
    svnRoot = args[1]
    svnProjectDir = args[2]
    jenkinsWorkspace = args[3]
    libDir = args[4]
    queryFile = args[5]
    new Checkout()
}

def init(){
    ant = new AntBuilder()
    ant.typedef(resource: 'org/tigris/subversion/svnant/svnantlib.xml'){
        classpath {
            fileset(dir: libDir, includes: '*.jar')
        }
    }
    ant.echo("INIT")
    pomFile = args[0]
    svnRoot = args[1]
    svnProjectDir = args[2]
    jenkinsWorkspace = args[3]
    libDir = args[4]
    queryFile = args[5]
    startCheckout()
}

我不确定是否需要main方法,这是我能够从Eclipse运行此类的唯一方法。我有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您无法使用内联groovy代码运行groovy脚本(<groovy src=...)。如果这样做,脚本将被忽略,并且只执行内联代码。

您可以通过切换

来验证它
def checkoutClass = new Checkout()
checkoutClass.init = {-> true}

println "hello"

为了执行你的脚本,只需删除上面的那两行。

您的脚本代码应如下所示:

ant = new AntBuilder()
ant.typedef(resource: 'org/tigris/subversion/svnant/svnantlib.xml'){
    classpath {
        fileset(dir: libDir, includes: '*.jar')
    }
}
ant.echo("INIT")
pomFile = args[0]
svnRoot = args[1]
svnProjectDir = args[2]
jenkinsWorkspace = args[3]
libDir = args[4]
queryFile = args[5]
startCheckout()