gradle-1启动篇

grade-1 启动流程(v6.9.1)

引子

做为Android开发,不仅需要对Apk构建流程熟悉外,还要知道gradle内部实现,通常说的gradle的生命周期你知道分为哪几个阶段吗?在不同生命周期你知道gradle到底做了什么吗?
本篇开始研究下gradle源码内部基本实现吧,你能从中找到答案,此处以6.9.1版本为分析

先看入口吧,gradlew.bat文件,里面核心代码

@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

前三个为空,最终调用的是GradleWrapperMain.main方法

准备

准备gradle源码

git clone https://github.com/gradle/gradle
gcb feature_v6.9.1 v6.9.1

修改com.gradle.enterprise:test-distribution-gradle-plugin:1.1.2-rc-1调整为com.gradle.enterprise:test-distribution-gradle-plugin:1.1.2同步即可

wrapper模块

image-20211217095118494

入口如下

// org.gradle.wrapper.GradleWrapperMain.java
public static void main(String[] args) throws Exception {
   
  			
  			// gradle-wrapper.jar
        File wrapperJar = wrapperJar();
        // load gradle-wrapper.properties file
        File propertiesFile = wrapperProperties(wrapperJar);
        File rootDir = rootDir(wrapperJar);

        CommandLineParser parser = new CommandLineParser();
        parser.allowUnknownOptions();
        parser.option(GRADLE_USER_HOME_OPTION, GRADLE_USER_HOME_DETAILED_OPTION).hasArgument();
        parser.option(GRADLE_QUIET_OPTION, GRADLE_QUIET_DETAILED_OPTION);

        SystemPropertiesCommandLineConverter converter = new SystemPropertiesCommandLineConverter();
        converter.configure(parser);

        ParsedCommandLine options = parser.parse(args);

        Properties systemProperties = System.getProperties();
        systemProperties.putAll(converter.convert(options, new HashMap<String, String>()));
				
		// gradle home 目录:~/.gradle
        File gradleUserHome = gradleUserHome(options);

        addSystemProperties(gradleUserHome, rootDir);

        Logger logger = logger(options);
				
		// 构建一个wrapper执行器,调用execute;
		// 1. 执行安装(如果本地没有安装
        WrapperExecutor wrapperExecutor = WrapperExecutor.forWrapperPropertiesFile(propertiesFile);
        wrapperExecutor.execute(
                args,
                new Install(logger, new Download(logger, "gradlew", UNKNOWN_VERSION), new PathAssembler(gradleUserHome)),
                new BootstrapMainStarter());
    }

// org.gradle.wrapper.WrapperExecutor.java
public void execute(String[] args, Install install, BootstrapMainStarter bootstrapMainStarter) throws Exception {
   				
  			// 
        File gradleHome = install.createDist
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值