2

我有以下 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 运行此类的唯一方法。任何想法我做错了什么?

4

1 回答 1

2

您不能将 groovy 脚本 ( <groovy src=...) 与内联 groovy 代码一起运行。如果你这样做,脚本将被忽略,只执行内联代码。

您可以通过切换来验证它

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()
于 2013-08-13T22:09:28.433 回答