2012-02-17 55 views
1

我使用声纳和cobertura(代码覆盖率)。我对我面临的问题感到困惑。如果我运行在声纳“太小的初始堆”中的错误cobertura

mvn sonar:sonar 

我的执行过程中看到以下错误

[INFO] 
[INFO] <<< cobertura-maven-plugin:2.5.1:cobertura (default-cli) @ hss-core <<< 
[INFO] 
[INFO] --- cobertura-maven-plugin:2.5.1:cobertura (default-cli) @ hss-core --- 
[INFO] Error occurred during initialization of VM 
Too small initial heap 

[ERROR] Error in Cobertura Report generation: Unable to generate Cobertura Report for project. 
org.apache.maven.plugin.MojoExecutionException: Unable to generate Cobertura Report for project. 
     at org.codehaus.mojo.cobertura.tasks.ReportTask.execute(ReportTask.java:93) 

如果我运行的Cobertura插件直接使用以下

mvn cobertura:cobertura 

没有错误同上,显示下面的输出,我认为是预期的输出。

[INFO] 
[INFO] <<< cobertura-maven-plugin:2.5.1:cobertura (default-cli) @ hss-core <<< 
[INFO] 
[INFO] --- cobertura-maven-plugin:2.5.1:cobertura (default-cli) @ hss-core --- 
[INFO] Cobertura 1.9.4.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file 
Cobertura: Loaded information on 39 classes. 
Report time: 1035ms 

我已经设置了MAVEN_OPTS(MAVEN_OPTS = -Xms512m)环境变量,但仍然得到错误。

谁能告诉我哪里出了问题,以及如何解决这个问题?

回答

5

它几乎感觉不到你在你的-Xms参数省略的“m”:

$java -Xms512 -version 
Error occurred during initialization of VM 
Too small initial heap 

不会伤害到检查其他环境变量的值,看看是否有任何与Java相关的定义(“设置“在Windows命令应全部打印出来) - 检查_JAVA_OPTS,MAVEN_OPTS等

+0

做了,谢谢您的好意。此外,如果它确实存在,为什么“mvn cobertura:cobertura”运行正常,但“mvn sonar:sonar”不会。 – 2012-02-17 06:36:29

+1

当我第一次看到这个答案时,我认为它是在暗示缺少的m是在X之后:'-Xs512',但是对于我来说,缺少的m是512之后的megs。我有-Xms512,当它应该是-Xms512m。 – OleTraveler 2013-03-07 17:13:58

1

声纳的Cobertura插件有一个特殊的参数,以增加分配给的Cobertura进程的内存:sonar.cobertura.maxmem

例如,你可以运行:mvn声纳:儿子AR -Dsonar.cobertura.maxmem =512米

http://docs.codehaus.org/display/SONAR/Code+coverage+plugins#Cobertura

+0

这个问题似乎是'太小的初始堆',这与最小堆大小有关。 – Raghuram 2012-02-17 07:10:40

+0

我试过使用 ..,这是一回事,对不对?仍然产生相同的错误。 :( – 2012-02-17 09:52:58