我有以下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运行此类的唯一方法。我有什么想法吗?
答案 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()