环境:
1. Linux
2. Gradle 1.6 / 7
3.语言 - Java
gradle clean build jacocoTestReport - 工作正常。
最近遵循SonarQube安装提供的文档: http://docs.sonarqube.org/display/SONAR/Running+SonarQube+as+a+Service+on+Linux (声纳开始,声纳状态,声纳停止等)...此命令将起作用。
更改了gradle构建脚本acc。到Gradle SonarRunner帮助页面: http://www.gradle.org/docs/current/userguide/sonar_runner_plugin.html
在运行sonarRunner任务时 - 我收到以下错误:
:sonarRunner
18:56:03.997 INFO - Load batch settings
18:56:04.140 INFO - User cache: /production/c123456/jenkins/.sonar/cache
18:56:04.146 INFO - Install plugins
18:56:04.851 INFO - Install JDBC driver
18:56:04.858 WARN - H2 database should be used for evaluation purpose only
18:56:04.858 INFO - Create JDBC datasource for jdbc:h2:tcp://devserver11.tr.company.com:9092/sonar
18:56:05.870 INFO - Initializing Hibernate
:sonarRunner FAILED
java.lang.OutOfMemoryError: PermGen space
> Building-bash-3.2$
在/ production / c123456 /声纳安装的声纳,即 - sonar / conf / sonar.properties - 一切看起来都很正确 - sonar / conf / wrapper.properties - 包含JAVA opts的有效值,即
# Java Additional Parameters
wrapper.java.additional.1=-Djava.awt.headless=true
wrapper.java.additional.2=-XX:MaxPermSize=1024m
wrapper.java.additional.3=-XX:+HeapDumpOnOutOfMemoryError
wrapper.java.additional.4=-XX:+CMSClassUnloadingEnabled
wrapper.java.additional.5=-XX:+UseConcMarkSweepGC
# RECOMMENDED : uncomment if Java Virtual Machine is a JDK but not a JRE. To know which JVM you use, execute
# 'java -version'. JDK displays 'Server VM'.
wrapper.java.additional.4=-server
# Initial Java Heap Size (in MB)
wrapper.java.initmemory=512
# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=1024
有人可以帮我解决这个错误消息 - PermGen空间问题 注意:这是从一台Linux机器上发生的,所以我尝试在其他Linux上安装Sonar 机器,仍然有相同的错误信息。
我在我自己的本地Windows机器上安装了SonarQube / Runner,并指向build.gradle sonarRunner部分,使用主机url作为我的本地机器/主机url我的机器名称(fqdn)与端口(:9000)等相同对于jdbc h2 tcp方式。
在运行“gradle clean build jacocoTestReport sonarRunner”时,它传递了上述错误,但又给了我一个奇怪的错误。 C:\ work是我检查项目的工作区:Project_A_Svc(服务项目 - Java源代码)。
:sonarRunner失败
失败:构建因异常而失败。
出了什么问题: 任务':sonarRunner'执行失败。
org.sonar.runner.RunnerException:'project_a_svc:project_a_svc'项目的文件夹'C:\ work \ Project_A_Svc \ src \ main \ java'不存在(基目录= C:\ work \ Project_A_Svc)
尝试: 使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。
建立失败
总时间:38.124秒
当我的源代码甚至没有该文件夹结构时,为什么Gradle 正在尝试查找“src / main / java”。 Gradle默认结构是使用“src / main / java”来获取java源代码,但是我的build.gradle确实有sourceSets部分,我已经提到了查找java源的位置。我已经尝试了多种方法来为src java / tests设置源Dirs,但它仍然试图寻找“src / main / java”。
build.gradle snapshost
apply plugin: 'java'
apply plugin: 'sonar-runner'
main {
java {
srcDir 'src/java'
}
}
test {
java {
srcDir 'test/java'
}
}
integrationTest {
java {
srcDir 'src/java-test'
}
}
}
和
build.gradle中的sonarRunner部分是:
def sonarServerUrl = "devserver11.tr.company.com"
sonarRunner {
sonarProperties {
property "sonar.host.url", "http://$sonarServerUrl:9000"
// these are default settings for the in-memory database. Change if using a persistent DB.
property "sonar.jdbc.url", "jdbc:h2:tcp://$sonarServerUrl:9092/sonar"
property "sonar.jdbc.driverClassName", "org.h2.Driver"
property "sonar.jdbc.username", "sonar"
property "sonar.jdbc.password", "sonar"
//properties ["sonar.sources"] += sourceSets.main.java.srcDirs
//properties ["sonar.tests"] += sourceSets.test.java.srcDirs
//----
properties["sonar.sources"] = "src/java"
properties["sonar.tests"] = "test/java"
}
}
有任何帮助吗?非常感谢。
答案 0 :(得分:2)
我取得了一些进展。
<强>步骤强>
请勿在sonar / conf / sonar.properties,wrapper.properties,sonar-runner / conf / sonar-runner.properties中更改任何内容。确保sonar.properties和sonar-runner.properties中的主机url值相同。
转到工作区(安装源代码的位置)。
冉 sonar-runner (可执行文件) - 它将显示路径/文件 它给出了我需要 sonar-project.properties 的错误,因为我遗漏了一些需要的变量 通过声纳。
使用link
找不到SCM提供程序。使用链接:http://jira.codehaus.org/browse/ACT-1714来解决此问题。
再次跑了声纳 - 跑者,它没事了。 (注意:此命令与运行sonarRunner不同,因为它是Gradle的声纳运行器任务)。
去SonarQube仪表板,现在有东西显示。
明天待命:
<强>更新强>
gradle clean build jacocoTestReport - 工作
gradle clean build jacocoTestReport sonarRunner - 失败说src / main / java不存在
gradle clean build jacocoTestReport sonarRunner -Dsonar.sources = src / java - WORKED
gradle clean build jacocoTestReport sonarRunner -Dsonar.sources =“src / java,test / java,src / java-test” - DID NOT WORKED(PermGen java error)
gradle clean build jacocoTestReport sonarRunner -Dsonar.sources =“src / java” - DID NOT WORKED(PermGen java error)
gradle clean build jacocoTestReport sonarRunner -Dsonar.sources = src / java - DID NOT WORKED(PermGen java error)
gradle sonarRunner -Dsonar.sources = src / java,test / java,src / java-test - DID NOT WORKED(错误是charset无法读取或导入 - charset UTF-8或者我最终设置为sonar.sourceEncoding)
gradle clea build jacocoTestReport - WORKED
,然后强>
gradle sonarRunner -Dsonar.sources =“src / java” - 工作
我已经尝试将sonar / conf / wrapper.properties中的MaxPernGen设置为各种值,如128,512,1024,2048,......高达8000m ......无法解决以下错误 - 同时运行所有gradle一个命令中的任务。
:sonarRunner FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':sonarRunner'.
> java.lang.OutOfMemoryError: PermGen space
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
想知道为什么我跑的时候会收到这个错误:
:gradle clean build jacocoTestReport sonarRunner“
确定 - 让PermGen内存问题已解决。
<强>步骤强>: 1.在我的〜/ .bashrc或〜/ .bash_profile中。我创建了以下变量
GRADLE_OPTS=” -XX:MaxPermSize=512m"
运行“which gradle”或基本上找到使用哪个gradle文件(shell或.bat)。转到该路径并打开“gradle”/“gradle.bat”(对于Windows)文件。
进行以下更改。
DEFAULT_JVM_OPTS="$JAVA_OPTS $GRADLE_OPTS"
执行“.~ / .bash_profile”或“.~ / .bashrc”.... - 或者打开一个新的putty会话。
确保PATH变量中包含gradle HOME / bin(Linux / Windows)
从工作区中运行以下命令(这次没有显示我之前得到的PermGen错误):
gradle clean build jacocoTestReport sonarRunner
:)今天早点回家的时间。
其他类似的变量是:服务器(putty会话级别)或IDE或Jenkins中的GRADLE_OPTS / JAVA_OPTS / SONAR_RUNNER_OPTS(其中-XX:Max ..值可以设置)。
感谢Allyn提示。
答案 1 :(得分:0)
如果你使用Gradle Wrapper,你可以在那里指定GRADLE_OPTS,这也适用于Jenkins。