我有sonarqube服务器4.0和sonar-ant-task-2.1。我的声纳目标在我的本地RHEL 5机器上运行良好,但是一旦我将它升级到共享的RHEL 5环境,它将由主目录为“/ dev / null”的用户运行。我无法改变这一点。
我收到以下错误: 无法创建用户缓存/ dev / null / .sonar / cache 引起:java.io.IOException:无法创建目录/dev/null/.sonar/cache
我设置了以下两个属性:
<property name="sonar.working.directory" value="dirWhereUserHasAccess"/>
<property name="sonar.userHome" value="dirWhereUserHasAccess"/>
这些属性似乎在本地具有所需的影响,但是在共享环境中运行时,不使用sonar.userHome。我犯了同样的错误。它正在尝试使用/ dev / null。
如何让声纳停止尝试访问此缓存的/ dev / null?
错误说明如下。 Jira任务已创建https://jira.codehaus.org/browse/SONARPLUGINS-3349
答案 0 :(得分:7)
默认的Sonar缓存目录路径为:System.getProperty("user.home") + File.separator + ".sonar"
在运行SONAR_USER_HOME
之前设置环境变量mvn sonar:sonar
。
Bash示例:SONAR_USER_HOME=/my/path/.sonar mvn sonar:sonar
很遗憾,名称SONAR_USER_HOME
具有误导性 - 它不是user.home
的替代品;它是完整的缓存目录路径。要复制默认行为,以下内容在Bash中就足够了:SONAR_USER_HOME=$HOME/.sonar mvn sonar:sonar
答案 1 :(得分:1)
未发现的错误...提交给用户组: 我相信在声纳 - 蚂蚁 - 任务 - 2.1-&gt;声纳 - 转轮2.4->声纳 - 转轮 - 冲击 - > Jars35
中存在问题此行未考虑sonar.userHome属性。当ant-task运行时,Jars35调用FileCacheBuilder.build()而不设置userHome。因此,建设者选择
System.getProperty(“user.home”)+ File.separator +“。sonar”
在我的情况下,它不是用户具有r / w访问权限的目录(/ dev / null)。因此,分析失败并出现此错误:
... 引起:java.io.IOException:无法创建目录/dev/null/.sonar/cache 在org.apache.commons.io.FileUtils.forceMkdir(FileUtils.java:1748) 在org.sonar.home.cache.FileCache.createDir(FileCache.java:155) ......还有30多个
我认为Jars35类需要能够设置userHome,否则此属性不会产生预期的影响。即使用户有一个有效的主目录,一些缓存的jar也会缓存到系统user.home中,其余的(在加载了bootstrap实现之后)将加载到相应的sonar.userHome位置。
FileCacheProvider使用sonar.userHome设置通过FileCacheBuilder构建FileCache。 https://github.com/SonarSource/sonar/blob/master/sonar-batch/src/main/java/org/sonar/batch/bootstrap/FileCacheProvider.java#L34
如果输入了
,我将使用jira问题进行更新答案 2 :(得分:0)
我建议在SonarQube用户列表http://sonarqube.15.x6.nabble.com/SonarQube-Users-f3159782.html
上发布此内容