IntelliJ代码覆盖跑步者 - 无头

时间:2017-02-14 14:59:19

标签: grails intellij-idea command-line code-coverage headless

根据:

https://intellij-support.jetbrains.com/hc/en-us/community/posts/206842605-Running-IntelliJ-code-coverage-headless-on-Jenkins-

可以在无头环境中使用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”标志的命令中。

这是一场鹅追逐,还是可以完成?

1 个答案:

答案 0 :(得分:0)

您在Windows上检查/tmp/classpath.jar了吗?此文件是自动生成的,并通过Manifest链接大量jar,以避免操作系统限制最大命令行长度。您的lib不存在或未正确链接依赖关系。

最终的类路径将包括来自classpath.jar目录的几个IDE jar,来自输出目录的项目类和依赖项,插件jar等。换句话说,运行应用程序所需的所有内容都将从生成的{ {1}}档案。

相关问题