2015-12-14 54 views
1

我已經搜索了很長時間,但我還沒有找到答案。 以下問題是:我想將外部信息傳遞給我的聲納亞軍,例如配置文件。用Sonar-Runner注入外部參數

我的第一個問題是要知道是否有可能做到這一點?

例如,我要建立一個項目,我想在外部參數來傳遞數據的基礎憑據:

# Required metadata 
sonar.projectKey=javascript_spine 
sonar.projectName=Simple Spine js 
sonar.projectVersion=1.1 

# For example database parameters 
sonar.dbUserName = "..." 
sonar.dbPassword = "xxxx" 
sonar.hostName = "ip" 

這就是我如何得到我的插件參數:

@Properties(@Property(key = "my.property", name = "My property", defaultValue = "20")) 
public class MyJavaRulesPlugin extends SonarPlugin { 

    private PrintWriter ecri; 

    public MyJavaRulesPlugin(Settings settings) { 

     if(settings != null) { 
      String value = settings.getString("my.property"); // default value is 20 
      System.out.println("La valeur de value est :" + value); 
      // Ecrire dans un fichier texte sur le Desktop 
      try { 
       ecri = new PrintWriter(new FileWriter("/home/michael/test.txt")); 
       ecri.print("La valeur de value est :" + value); 
       ecri.flush(); 
       ecri.close(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

    } 

回答

1

由於記錄在http://docs.sonarqube.org/display/DEV/Coding+a+Plugin#CodingaPlugin-HowtoGetConfiguration中,插件可以通過Java組件org.sonar.api.config.Settings獲取屬性值。

注意設置不應從org.sonar.api.SonarPlugin實例(生命週期的原因,設置後初始化)使用,但已擴展

+0

感謝西蒙,但我有(由SonarPlugin#getExtensions()返回)仍然是一個問題。我創建了包含我的屬性值的插件.jar,但是當我使用sonar-runner運行一個java項目時,我得到了這個堆棧錯誤:「錯誤:由:org.sonar.api.resources.Project.getProperty( Ljava /郎/字符串;)Ljava /郎/對象;」 – MickKOZA74