Gradle源码入门五

分析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

结果

时间: 2024-10-02 11:48:13

Gradle源码入门五的相关文章

Gradle源码入门学习之十-- Listener & Dispatch

new ListenerBroadcast<OutputEventListener>(OutputEventListener.class); -> public ListenerBroadcast(Class<T> type) { this.type = type; broadcast = new BroadcastDispatch<T>(type); source = new ProxyDispatchAdapter<T>(broadcast, ty

Gradle源码入门四

接三 如果我们运行gradle hello  (hello 是一个task) 代码会走到org.gradle.launcher.cli.RunBuildAction,  这个类的run()函数 public void run() { executer.execute( new ExecuteBuildAction(startParameter), new DefaultBuildCancellationToken(), new DefaultBuildActionParameters(clien

Gradle源码入门九-settings的include是如何工作的

先上call stack script.run()  in org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory 本代码中,script=settings_ani2pwefx3gv..... ->org.gradle.groovy.scripts.BasicScript.methodMissing(String name, Object params)  //name = 'include' params='sub_proje

Gradle源码入门八

启动的时候,调用了  launcher.cli.BuildActionsFactory.java private Runnable runBuildInProcess(StartParameter startParameter, DaemonParameters daemonParameters, ServiceRegistry loggingServices) { ServiceRegistry globalServices = ServiceRegistryBuilder.builder

Gradle源码入门三

本文以在command窗口执行最简单的 gradle -v 为例子说明 从上文提到的EntryPoint.java开始,调用该类的doAction</p><p>实际调用到Main.java  的doAction <pre name="code" class="java"> protected void doAction(String[] args, ExecutionListener listener) { createActio

gradle源码入门学习六

DefaultServiceRegistry之findProviderMethods private void findProviderMethods(Object target) { Set<String> methods = new HashSet<String>(); for (Class<?> type = target.getClass(); type != Object.class; type = type.getSuperclass()) { findDe

Java源码转C#源码的五款最佳工具

Java源码转C#源码的五款最佳工具 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 出于某些需要,你可能会遇到把Java源码转换成C#源码的任务.如果是自己一边理解源码,再一边手工翻译,那效率肯定是很低的.有鉴于此,本文推荐了五款最佳的源码转换工具,以解决你的烦恼.工具1#:Java语言转换器助手地址:http://www.microsoft.com/en-us/download/details.aspx?id=14349 Java语言转换器助手是

baksmali和smali源码分析(五)

官方文档对于dex中的class数据结构表示如下: class_idx uint index into the type_ids list for this class. This must be a class type, and not an array or primitive type. access_flags uint access flags for the class (public, final, etc.). See "access_flags Definitions&quo

boost.asio源码剖析(五) ---- 泛型与面向对象的完美结合

有人说C++是带类的C:有人说C++是面向对象编程语言:有人说C++是面向过程与面向对象结合的语言.类似的评论网上有很多,虽然正确,却片面,是断章取义之言. C++是实践的产物,C++并没有为了成为某某类型的语言而设计,而是一切以工程实践为目的,一切以提升语言能力为目的. 1983年C++诞生之时,由于兼容C语言而天生拥有了面向过程编程的能力:       1989年推出的2.0版,C++完善了对面向对象编程范式的支持:       1993年的3.0版,C++中引入了模板(template),