环境:
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 ( 声纳启动、声纳状态、声纳停止等)。 .commands 将在这一点上工作。
更改了 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 的声纳,即 - 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 失败
FAILURE:构建失败并出现异常。
出了什么问题:任务“: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 / 测试设置源目录,但它仍在尝试寻找“src/main/java”。
build.gradle snaphost
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"
}
}
有什么帮助吗?非常感谢。