Ant 运行easyb\selenium时出现permgen错误
我有6种技术在发挥作用 容易的 硒 格拉德尔 蚂蚁 JAVA 詹金斯 我们使用easyB编写场景Ant 运行easyb\selenium时出现permgen错误,ant,selenium,jenkins,gradle,easyb,Ant,Selenium,Jenkins,Gradle,Easyb,我有6种技术在发挥作用 容易的 硒 格拉德尔 蚂蚁 JAVA 詹金斯 我们使用easyB编写场景 这些场景依次调用Selenium 最后,我们使用Gradle启动所有故事。 由于我们没有针对easyB的gradle插件,gradle实际上使用ant来运行easyB 这个Gradle脚本最终通过一个Jenkins作业执行 完整执行大约需要3-4小时。 中途,我们得到一个perm gen错误 我不确定哪个过程需要增加PermGen 容易吗? 蚂蚁 格拉德尔 错误消息 [ant:easyb]重试值现
这些场景依次调用Selenium
最后,我们使用Gradle启动所有故事。 由于我们没有针对easyB的gradle插件,gradle实际上使用ant来运行easyB 这个Gradle脚本最终通过一个Jenkins作业执行 完整执行大约需要3-4小时。 中途,我们得到一个perm gen错误 我不确定哪个过程需要增加PermGen 容易吗? 蚂蚁 格拉德尔
错误消息
[ant:easyb]重试值现在为:2
[ant:easyb]objectID设置为:60868
[ant:easyb]创建主体60868后中断
[ant:easyb]创建就诊>>>>>预处理
[ant:easyb]创建映像组>>>>>auto-gp1
[ant:easyb]运行easyb故事或规范时出错
[ant:easyb]java.lang.OutOfMemoryError:PermGen空间
[ant:easyb]easyb执行失败 失败:生成失败,出现异常
渐变脚本
check << {
def script = new GroovyShell()
script.run(new File('InitializeReport.groovy'))
ant.taskdef(name: "easyb", classname:"org.easyb.ant.BehaviorRunnerTask", classpath: sourceSets.test.runtimeClasspath.asPath)
ant.easyb( classpath: sourceSets.test.runtimeClasspath.asPath, failureProperty:'easyb_failed' ,tags:tags) {
report( location:"${project.testResultsDir}/story."+format, format:format )
behaviors( dir: storiesHome ) {
include( name:storyToBeExecuted )
}
}
ant.fail( if:'easyb_failed', message: 'Failures in easyb stories' )
}
检查您需要增加perm gen空间,您可以通过VM设置设置max参数来实现这一点。在命令行上,使用以下选项启动Java:
-XX:MaxPermSize=128m
另请参见:按照您实现它的方式,easyB测试将在“主”Gradle JVM中运行(除非easyB Ant任务派生一个新的JVM,我对此表示怀疑)。将JVM选项传递给该进程的一种方法是通过Gradle\u OPTS
环境变量:
export GRADLE_OPTS="-XX:MaxPermSize=128m"
设置此选项的其他方法有properties.gradle
(有关详细信息,请参阅)或调整gradlew
脚本(如果您碰巧使用了gradle包装器)。用于哪个进程?Ant?gradle?EasyB?导致错误的进程。对所有人来说,这都没有坏处!我确实将GRADLE_OPTS添加到了我的env变量中——这似乎没有什么帮助。我想我可以尝试其他替代方法……要么您在设置环境变量时出错,要么easyB Ant任务派生了一个新的JVM。我找不到关于后者的任何迹象。使用*nix上的ps
或Windows上的Process Explorer之类的工具,您可以轻松地检查哪些命令行参数被传递到Gradle进程,以及-XX:MaxPermSize
是否在其中。我离此越来越近了。。我可以看到Gradle进程实际上正在获得内存选项(我必须编辑Gradle脚本),但是从Gradle启动的EasyB脚本没有被传递内存选项。因此,看起来EasyB Ant任务实际上创建了一个新进程,这使得这是一个纯粹的EasyB(Ant任务)问题。我没有看到将内存选项传递给Ant任务的方法,但最好在easyB列表上询问。好吧,我想我终于到了——不是Gradle产生了第二个进程。但是蚂蚁的任务。。。。如果是这样的话——你是对的,那将是一个Q for easyB列表。谢谢你的帮助和耐心。