分析DefaultGradleLauncher.java
private void doBuildStages(Stage upTo) 函數的第二步
// Evaluate settings script
SettingsInternal settings = settingsHandler.findAndLoadSettings(gradle);
buildListener.settingsEvaluated(settings);
從 startParameter 開始
StartParameter{taskRequests=[DefaultTaskExecutionRequest{args=[hello],projectPath='null'}], excludedTaskNames=[], currentDir=C:\Users\xxx\workspace\Gradle, searchUpwards=true, projectProperties={}, systemPropertiesArgs={}, gradleUserHomeDir=C:\Users\xxx\.gradle, gradleHome=C:\gradle-2.2.1, logLevel=LIFECYCLE, showStacktrace=INTERNAL_EXCEPTIONS, buildFile=null, initScripts=[], dryRun=false, rerunTasks=false, recompileScripts=false, offline=false, refreshDependencies=false, parallelThreadCount=0, configureOnDemand=false}
這個變量有一個searchUpwards, 如果爲true,找
currentDir + settings.gradle
then loop:
parentDir + settings.gradle
parentDir/master + settings.gradle
找到一個有效的即止
------------------
如果爲false,找到父目錄即止
=========================
在org.gradle.initialization SettingsLocation.java
public SettingsLocation(File settingsDir, File settingsFile) {
this.settingsDir = settingsDir;
this.settingsScriptSource = settingsFile == null
? new StringScriptSource("empty settings script", "")
: new UriScriptSource("settings file", settingsFile);
}
如果沒有任何settings文件, settingdir就是currentDir, settingsFile is null
過程基本和init 文件相似,調用DefaultScriptPluginFactory.java 裏面的 ScriptPluginImpl.apply
結果