根据:
可以在无头环境中使用intellij代码覆盖运行器 - 即Jenkins。
这很好,因为IntelliJ报告了比新的groovy代码更准确的覆盖结果。的Cobertura。我还可以从Grails测试中收集信息 - 单元和集成。但是,我不知道如何在Jenkins上设置它 - gradle,maven,自定义构建脚本或其他任何东西。
当IntelliJ运行Grails测试时,它会触发以下命令:
C:\Program Files\Java\jdk1.7.0_79\bin\java
-XX:+TieredCompilation
-XX:TieredStopAtLevel=1
-XX:CICompilerCount=3
-Dgrails.full.stacktrace=true
-Djline.WindowsTerminal.directConsole=false
-Dgrails.build.listeners=org.jetbrains.groovy.grails.rt.GrailsIdeaTestListener
-Didea.launcher.port=7533
"-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 2016.3\bin" -classpath C:\Users\xxx\AppData\Local\Temp\classpath.jar
-Dfile.encoding=UTF-8 com.intellij.rt.execution.application.AppMain org.grails.cli.GrailsCli test-app -echoOut
这表明应安装IntelliJ以使其无头运行。是否可以在无头环境中执行上述命令?
我尝试解压缩intellij并执行以下命令(稍微修改为linux)命令:
java
-XX:+TieredCompilation
-XX:TieredStopAtLevel=1
-XX:CICompilerCount=3
-Dgrails.full.stacktrace=true
-Djline.WindowsTerminal.directConsole=false -Dgrails.build.listeners=org.jetbrains.groovy.grails.rt.GrailsIdeaTestListen r
-Didea.launcher.port=7533
-Didea.launcher.bin.path=/home/jenkins/idea/bin -classpath /tmp/classpath.jar
-Dfile.encoding=UTF-8 org.grails.cli.GrailsCli test-app -echoOut
它失败了:
Error: Could not find or load main class com.intellij.rt.execution.application.AppMain
即使将idea_rt.jar添加到带有“cp”标志的命令中。
这是一场鹅追逐,还是可以完成?
答案 0 :(得分:0)
您在Windows上检查/tmp/classpath.jar
了吗?此文件是自动生成的,并通过Manifest链接大量jar,以避免操作系统限制最大命令行长度。您的lib
不存在或未正确链接依赖关系。
最终的类路径将包括来自classpath.jar
目录的几个IDE jar,来自输出目录的项目类和依赖项,插件jar等。换句话说,运行应用程序所需的所有内容都将从生成的{ {1}}档案。