【发布时间】:2013-12-30 14:54:48
【问题描述】:
我正在将一个项目从 grails 1.3.6 切换到 grails 2.2.4。该项目建立在一个独立的构建VM上,并使用ant 1.7.1。系统变量设置为指向 ant 1.7.1 和 grails 2.2.4。 Grails 2.2.4 使用windows 命令行成功启动。这是应该编译 grails 文件的 ant 脚本的摘录:
任务设置-
<path id="grails.classpath">
<fileset dir="${env.grails.home}/dist" includes="grails-bootstrap-*.jar"/>
<fileset dir="${env.grails.home}/lib">
<include name="**/groovy-all*.jar"/>
<include name="**/ivy*.jar"/>
<include name="**/gpars*.jar"/>
<include name="**/gant_groovy*.jar"/>
</fileset>
</path>
<taskdef name="grails" classname="grails.ant.GrailsTask" classpathref="grails.classpath"/>
初始化执行:
<target name="-init">
<record name="C:/log/compile_output.log" />
<echo level="verbose">Deleting old compiled binaries, if existing...</echo>
<delete dir="${dir.binaries}" failonerror="false" includeemptydirs="true"/>
<delete dir="${dir.testBinaries}" failonerror="false" includeemptydirs="true"/>
<grails home="${env.grails.home}" script="Clean"/> ####THIS LINE IS FAILING
<delete dir="${dir.dist}" failonerror="false" includeemptydirs="true"/>
<echo level="verbose">Creating directories for the compiled binaries - '${dir.binaries}' and '${dir.testBinaries}' ...</echo>
<mkdir dir="${dir.binaries}"/>
<mkdir dir="${dir.testBinaries}"/>
<mkdir dir="${dir.dist}"/>
<grails home="${env.grails.home}" script="AddProxy" args="myProxy --host=webproxy.int.westgroup.com --port=80"/>
<grails home="${env.grails.home}" script="SetProxy" args="myProxy"/>
</target>
<grails home="${env.grails.home}" script="Clean"/> 行失败。被吐出的堆栈跟踪如下:
D:\Builds\141\Cobalt PAC\PAC\Sources\ant\CompileAntScript.xml:72: Unable to star
t Grails: java.lang.reflect.InvocationTargetException
at grails.ant.GrailsTask.runGrails(GrailsTask.java:137)
at grails.ant.GrailsTask.execute(GrailsTask.java:98)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
...............
Caused by: java.lang.NoClassDefFoundError: jline/CompletionHandler
at org.codehaus.groovy.grails.cli.GrailsScriptRunner.<init>(GrailsScript
Runner.java:96)
我还确保 grails 环境设置正确。使用调试输出,我看到Setting project property: env.grails.home -> C:\grails-2.2.4 行。这么老的ant版本有冲突吗?
----编辑-----
我创建了一个新的 grails 项目,并在我的机器上运行了相同的命令。我得到了完全相同的问题,所以我猜这不是脏缓存问题。我还在构建服务器上尝试了 ant 1.8.2 并收到了同样的问题。
看起来与JIRA 8496有关
【问题讨论】: