Sonarqube 使用Sonar Runner注入外部参数

Sonarqube 使用Sonar Runner注入外部参数,sonarqube,sonar-runner,Sonarqube,Sonar Runner,我找了很长时间,还没有找到答案。 下面的问题是:我想把外部信息传递给我的sonar runner,比如一个配置文件 我的第一个问题是,是否有可能做到这一点 例如,我想要构建一个项目,并且我想要传入数据库凭据的外部参数: # Required metadata sonar.projectKey=javascript_spine sonar.projectName=Simple Spine js sonar.projectVersion=1.1 # For example database par

我找了很长时间,还没有找到答案。 下面的问题是:我想把外部信息传递给我的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();
            }
        }

    }
如中所述,插件可以通过Java组件org.sonar.api.config.Settings获取属性值


请注意,不应从org.sonar.api.SonarPlugin实例(生命周期原因,设置稍后初始化)使用设置,而应从扩展(由SonarPlugin#getExtensions()返回)

谢谢Simon,但我仍然有一个问题。我创建了包含属性值的plugin.jar,但当我使用sonar runner运行java项目时,我得到了这个堆栈错误:“错误:由以下原因引起:org.sonar.api.resources.project.getProperty(Ljava/lang/String;)Ljava/lang/Object;”