SonarQube源码解析时,首选读取conf/sonar.properties配置,并将信息放进一个AppSettings中存储, 而AppSettings内部实际上是一个Sonar自定义类Props(包含Properties和Encryption两个实例变量,用于处理配置和安全);并通过定义AppSettingsLoader接口的load()方法来完成AppSettings的加载。
public interface AppSettingsLoader {
AppSettings load();
}
new AppSettingsLoaderImpl(cliArguments); 将参数传入,并在该AppSettingsLoader接口的实现类中完成初始化操作,即:传入cliArguments, 通过反射获取Sonar的home目录,即org.sonar.application.App所在类路径(sonar-application-6.7.6.jar中)的parent目录,从sonar打包可以体现;
bin
conf
data
elasticsearch
extensions
lib
- sonar-application-6.7.6.jar
logs
temp
web
COPYING
以及FileSystemSettings, JdbcSettings, ClusterSettings三个Consumer<Props>类型的实现类