15. Gradle编译其他应用代码流程(四) - Configure过程

简介:

接上一遍Load过程的博客来继续  14. Gradle编译其他应用代码流程(三) - Load过程


这一边继续讲Configure过程。


Configure过程源代码

文件路径:

subprojects\core\src\main\java\org\gradle\initialization\DefaultGradleLauncher.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private  void  doBuildStages(Stage upTo) {
         ....
 
         if  (stage == Stage.Load) {
             // Configure build
             buildOperationExecutor.run( "Configure build" new  Runnable() {
                 @Override
                 public  void  run() {
                     buildConfigurer.configure(gradle);
 
                     if  (!gradle.getStartParameter().isConfigureOnDemand()) {
                         buildListener.projectsEvaluated(gradle);
                     }
 
                     modelConfigurationListener.onConfigure(gradle);
                 }
             });
 
             stage = Stage.Configure;
         }
         ...
}


一. 首次看buildConfigurer.configure(gradle)


文件路径:

subprojects\core\src\main\java\org\gradle\configuration\DefaultBuildConfigurer.java

1
2
3
4
5
public  void  configure(GradleInternal gradle) {
         ...
         projectConfigurer.configureHierarchy(gradle.getRootProject());
         
     }


文件路径:

subprojects\core\src\main\java\org\gradle\execution\TaskPathProjectEvaluator.java

1
2
3
4
5
6
7
8
9
10
11
12
public  class  TaskPathProjectEvaluator  implements  ProjectConfigurer {
     ...
     public  void  configureHierarchy(ProjectInternal project) {
         project.evaluate();
         for  (Project sub : project.getSubprojects()) {
             if  (cancellationToken.isCancellationRequested()) {
                 throw  new  BuildCancelledException();
             }
             ((ProjectInternal) sub).evaluate();
         }
     }
}


在configureHierarchy里面,首先执行根项目的evaluate(),然后循环执行它的子项目的evaluate()。

就像往下面看:

文件路径:

subprojects\core\src\main\java\org\gradle\api\internal\project\DefaultProject.java

1
2
3
4
5
public  DefaultProject evaluate() {
         getProjectEvaluator().evaluate( this , state);
         state.rethrowFailure();
         return  this ;
     }



subprojects\core\src\main\java\org\gradle\configuration\project\LifecycleProjectEvaluator.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public  void  evaluate(ProjectInternal project, ProjectStateInternal state) {
         ...
 
         state.setExecuting( true );
         try  {
             delegate.evaluate(project, state);
         catch  (Exception e) {
             addConfigurationFailure(project, state, e);
         finally  {
             state.setExecuting( false );
             state.executed();
             notifyAfterEvaluate(listener, project, state);
         }
     }


subprojects\core\src\main\java\org\gradle\configuration\project\ConfigureActionsProjectEvaluator.java

1
2
3
4
5
6
7
8
9
public  class  ConfigureActionsProjectEvaluator  implements  ProjectEvaluator {
     ...
 
     public  void  evaluate(ProjectInternal project, ProjectStateInternal state) {
         for  (ProjectConfigureAction configureAction : configureActions) {
             configureAction.execute(project);
         }
     }
}


subprojects\core\src\main\java\org\gradle\configuration\project\BuildScriptProcessor.java

1
2
3
4
5
6
7
8
9
10
public  class  BuildScriptProcessor  implements  ProjectConfigureAction {
     ...
 
     public  void  execute(ProjectInternal project) {
         ...
             ScriptPlugin configurer = configurerFactory.create(project.getBuildScriptSource(), project.getBuildscript(), project.getClassLoaderScope(), project.getBaseClassLoaderScope(),  true );
             configurer.apply(project);
         ...
     }
}


接下来就会调用到ScriptPluginImpl.apply,这是我们上一遍讲过的。会去应用这个配置文件。具体怎么应用,需要看它生成的class文件。

文件路径在

D:\gradle_jar_cache\caches\3.1-snapshot-1\scripts-remapped\quality_cjfs2g3ij3bqjjsmf9bhahspf\2n69on6v0v04xd0c8c445muqy\dsld7eae713beda1bd9e69f8461da734880\classes


截个class内容的图:


wKiom1kpHHWwOyVHAAEvQigKHfs515.png-wh_50

 

这是因为我们的gradle文件配置了3个plugin

1
2
3
apply plugin:  'checkstyle'
apply plugin:  'pmd'
apply plugin:  'findbugs'


所以,在configure阶段,它会去解析我们的配置文件,并且去加载我们配置的plugin插件。

以加载pmd插件为例,贴一个调用堆栈:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
java.lang.Exception: Sandy findPluginDescriptor pluginId: org.gradle.pmd
     at org.gradle.api.internal.plugins.ClassloaderBackedPluginDescriptorLocator.findPluginDescriptor(ClassloaderBackedPluginDescriptorLocator.java:31)
     at org.gradle.api.internal.plugins.DefaultPluginRegistry$1.load(DefaultPluginRegistry.java:59)
     at org.gradle.api.internal.plugins.DefaultPluginRegistry$1.load(DefaultPluginRegistry.java:51)
     at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524)
     at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317)
     at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280)
     at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195)
     at com.google.common.cache.LocalCache.get(LocalCache.java:3934)
     at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938)
     at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821)
     at org.gradle.api.internal.plugins.DefaultPluginRegistry.uncheckedGet(DefaultPluginRegistry.java:149)
     at org.gradle.api.internal.plugins.DefaultPluginRegistry.lookup(DefaultPluginRegistry.java:138)
     at org.gradle.api.internal.plugins.DefaultPluginRegistry.lookup(DefaultPluginRegistry.java:127)
     at org.gradle.api.internal.plugins.DefaultPluginRegistry.lookup(DefaultPluginRegistry.java:121)
     at org.gradle.api.internal.plugins.DefaultPluginRegistry.lookup(DefaultPluginRegistry.java:121)
     at org.gradle.api.internal.plugins.DefaultPluginRegistry.lookup(DefaultPluginRegistry.java:121)
     at org.gradle.api.internal.plugins.DefaultPluginManager.apply(DefaultPluginManager.java:108)
     at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyType(DefaultObjectConfigurationAction.java:113)
     at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$200(DefaultObjectConfigurationAction.java:36)
     at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$3.run(DefaultObjectConfigurationAction.java:80)
     at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:136)
     at org.gradle.groovy.scripts.DefaultScript.apply(DefaultScript.java:114)
     at org.gradle.api.Script$apply$0.callCurrent(Unknown Source)
     at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
     at quality_cjfs2g3ij3bqjjsmf9bhahspf.run(E:\work_space\Android-Prototype\config\quality.gradle:2)
     
     at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:90)
     at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl$2.run(DefaultScriptPluginFactory.java:176)
     at org.gradle.configuration.DefaultScriptTarget.addConfiguration(DefaultScriptTarget.java:74)
     at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:181)
     at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyScript(DefaultObjectConfigurationAction.java:102)
     at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$000(DefaultObjectConfigurationAction.java:36)
     at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$1.run(DefaultObjectConfigurationAction.java:62)
     at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:136)
     at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPluginAware.java:44)
     at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.java:34)
     at org.gradle.api.Script$apply$0.callCurrent(Unknown Source)
     at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
     at build_840r8chxz90tc75jy1mlavsji.run(E:\work_space\Android-Prototype\app\build.gradle:3)
     at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:90)
     at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl$2.run(DefaultScriptPluginFactory.java:176)
     at org.gradle.configuration.ProjectScriptTarget.addConfiguration(ProjectScriptTarget.java:77)
     at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:181)
     at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:38)
     at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:25)
     at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34)
     at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:55)
     at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:573)
     at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:125)
     at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:47)
     at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:38)
     at org.gradle.initialization.DefaultGradleLauncher$2.run(DefaultGradleLauncher.java:151)
     at org.gradle.internal.Factories$1.create(Factories.java:22)
     at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
     at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:53)
     at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:148)
     at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:33)
     at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:112)
     at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:106)
     at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
     at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:63)
     at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)
     at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:92)
     at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:67)
     at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:31)
     at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:43)
     at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:42)
     at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
     at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:79)
     at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:51)
     at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:54)
     at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:173)
     at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:250)
     at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:217)
     at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:33)
     at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
     at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
     at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
     at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:210)
     at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:174)
     at org.gradle.launcher.Main.doAction(Main.java:33)
     at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.lang.reflect.Method.invoke(Method.java:483)
     at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:60)
     at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:37)
     at org.gradle.launcher.GradleMain.main(GradleMain.java:24)


最后是在ClassloaderBackedPluginDescriptorLocator.findPluginDescriptor方法里面load plugin。


文件路径:

subprojects\core\src\main\java\org\gradle\api\internal\plugins\ClassloaderBackedPluginDescriptorLocator.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public  class  ClassloaderBackedPluginDescriptorLocator  implements  PluginDescriptorLocator {
 
     ...
 
     public  PluginDescriptor findPluginDescriptor(String pluginId) {
         URL resource = classLoader.getResource( "META-INF/gradle-plugins/"  + pluginId +  ".properties" );
         Exception ex =  new  Exception( "Sandy findPluginDescriptor pluginId: "  + pluginId);
         ex.printStackTrace();
         if  (resource ==  null ) {
             return  null ;
         else  {
             return  new  PluginDescriptor(resource);
         }
     }
 
}


它会去找META-INF/gradle-plugins/'pluginid'.properties这个文件。

以pmd为例, pmd的这个配置文件路径是

subprojects\code-quality\src\main\resources\META-INF\gradle-plugins\org.gradle.pmd.properties


wKioL1kpE4DQ3xduAACsz2yja1w813.png-wh_50


内容是 implementation-class=org.gradle.api.plugins.quality.PmdPlugin  它表示pmd插件的描述类是PmdPlugin.java,需要去加载这个类。



二. 加载task

在Configure阶段会load所需要的task,以pmd为例,下面是调用堆栈:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
10:10:14.934 [ERROR] [system.err] java.lang.Exception: Sandy pmd init
10:10:14.934 [ERROR] [system.err]    at org.gradle.api.plugins.quality.Pmd.< init >(Pmd.java:68)
10:10:14.934 [ERROR] [system.err]    at org.gradle.api.plugins.quality.Pmd_Decorated.< init >(Unknown Source)
10:10:14.934 [ERROR] [system.err]    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
10:10:14.934 [ERROR] [system.err]    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
10:10:14.934 [ERROR] [system.err]    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
10:10:14.934 [ERROR] [system.err]    at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
10:10:14.934 [ERROR] [system.err]    at org.gradle.api.internal.DependencyInjectingInstantiator.newInstance(DependencyInjectingInstantiator.java:56)
10:10:14.934 [ERROR] [system.err]    at org.gradle.api.internal.ClassGeneratorBackedInstantiator.newInstance(ClassGeneratorBackedInstantiator.java:36)
10:10:14.935 [ERROR] [system.err]    at org.gradle.api.internal.project.taskfactory.TaskFactory$1.call(TaskFactory.java:121)
10:10:14.935 [ERROR] [system.err]    at org.gradle.api.internal.project.taskfactory.TaskFactory$1.call(TaskFactory.java:118)
10:10:14.935 [ERROR] [system.err]    at org.gradle.util.GUtil.uncheckedCall(GUtil.java:401)
10:10:14.935 [ERROR] [system.err]    at org.gradle.api.internal.AbstractTask.injectIntoNewInstance(AbstractTask.java:176)
10:10:14.935 [ERROR] [system.err]    at org.gradle.api.internal.project.taskfactory.TaskFactory.create(TaskFactory.java:118)
10:10:14.935 [ERROR] [system.err]    at org.gradle.api.internal.project.taskfactory.TaskFactory.createTask(TaskFactory.java:77)
10:10:14.935 [ERROR] [system.err]    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory.createTask(AnnotationProcessingTaskFactory.java:46)
10:10:14.935 [ERROR] [system.err]    at org.gradle.api.internal.project.taskfactory.DependencyAutoWireTaskFactory.createTask(DependencyAutoWireTaskFactory.java:39)
10:10:14.935 [ERROR] [system.err]    at org.gradle.api.internal.tasks.DefaultTaskContainer.create(DefaultTaskContainer.java:63)
10:10:14.935 [ERROR] [system.err]    at org.gradle.api.internal.project.DefaultProject.task(DefaultProject.java:976)
10:10:14.935 [ERROR] [system.err]    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
10:10:14.935 [ERROR] [system.err]    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
10:10:14.935 [ERROR] [system.err]    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
10:10:14.935 [ERROR] [system.err]    at java.lang.reflect.Method.invoke(Method.java:483)
10:10:14.935 [ERROR] [system.err]    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
10:10:14.935 [ERROR] [system.err]    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
10:10:14.935 [ERROR] [system.err]    at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:382)
10:10:14.935 [ERROR] [system.err]    at org.gradle.internal.metaobject.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:170)
10:10:14.935 [ERROR] [system.err]    at org.gradle.internal.metaobject.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:96)
10:10:14.935 [ERROR] [system.err]    at org.gradle.internal.metaobject.MixInClosurePropertiesAsMethodsDynamicObject.invokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:30)
10:10:14.935 [ERROR] [system.err]    at org.gradle.internal.metaobject.AbstractDynamicObject.invokeMethod(AbstractDynamicObject.java:163)
10:10:14.935 [ERROR] [system.err]    at org.gradle.groovy.scripts.BasicScript.methodMissing(BasicScript.java:83)
10:10:14.935 [ERROR] [system.err]    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
10:10:14.935 [ERROR] [system.err]    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
10:10:14.935 [ERROR] [system.err]    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
10:10:14.935 [ERROR] [system.err]    at java.lang.reflect.Method.invoke(Method.java:483)
10:10:14.935 [ERROR] [system.err]    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
10:10:14.935 [ERROR] [system.err]    at groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:941)
10:10:14.935 [ERROR] [system.err]    at groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:1264)
10:10:14.935 [ERROR] [system.err]    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1217)
10:10:14.935 [ERROR] [system.err]    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
10:10:14.935 [ERROR] [system.err]    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69)
10:10:14.935 [ERROR] [system.err]    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
10:10:14.935 [ERROR] [system.err]    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)
10:10:14.935 [ERROR] [system.err]    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:182)
10:10:14.935 [ERROR] [system.err]    at quality_cjfs2g3ij3bqjjsmf9bhahspf.run(E:\work_space\Android-Prototype\config\quality.gradle:49)
10:10:14.935 [ERROR] [system.err]    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:90)
10:10:14.936 [ERROR] [system.err]    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl$2.run(DefaultScriptPluginFactory.java:176)
10:10:14.936 [ERROR] [system.err]    at org.gradle.configuration.DefaultScriptTarget.addConfiguration(DefaultScriptTarget.java:74)
10:10:14.936 [ERROR] [system.err]    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:181)
10:10:14.936 [ERROR] [system.err]    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyScript(DefaultObjectConfigurationAction.java:102)
10:10:14.936 [ERROR] [system.err]    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$000(DefaultObjectConfigurationAction.java:36)
10:10:14.936 [ERROR] [system.err]    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$1.run(DefaultObjectConfigurationAction.java:62)
10:10:14.936 [ERROR] [system.err]    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:136)
10:10:14.936 [ERROR] [system.err]    at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPluginAware.java:44)
10:10:14.936 [ERROR] [system.err]    at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.java:34)
10:10:14.936 [ERROR] [system.err]    at org.gradle.api.Script$apply$0.callCurrent(Unknown Source)
10:10:14.936 [ERROR] [system.err]    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
10:10:14.936 [ERROR] [system.err]    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)
10:10:14.936 [ERROR] [system.err]    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
10:10:14.936 [ERROR] [system.err]    at build_840r8chxz90tc75jy1mlavsji.run(E:\work_space\Android-Prototype\app\build.gradle:3)
10:10:14.936 [ERROR] [system.err]    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:90)
10:10:14.936 [ERROR] [system.err]    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl$2.run(DefaultScriptPluginFactory.java:176)
10:10:14.936 [ERROR] [system.err]    at org.gradle.configuration.ProjectScriptTarget.addConfiguration(ProjectScriptTarget.java:77)
10:10:14.936 [ERROR] [system.err]    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:181)
10:10:14.936 [ERROR] [system.err]    at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:38)
10:10:14.936 [ERROR] [system.err]    at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:25)
10:10:14.936 [ERROR] [system.err]    at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34)
10:10:14.936 [ERROR] [system.err]    at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:55)
10:10:14.936 [ERROR] [system.err]    at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:573)
10:10:14.936 [ERROR] [system.err]    at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:125)
10:10:14.936 [ERROR] [system.err]    at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:47)
10:10:14.936 [ERROR] [system.err]    at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:38)
10:10:14.936 [ERROR] [system.err]    at org.gradle.initialization.DefaultGradleLauncher$2.run(DefaultGradleLauncher.java:151)
10:10:14.936 [ERROR] [system.err]    at org.gradle.internal.Factories$1.create(Factories.java:22)
10:10:14.936 [ERROR] [system.err]    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
10:10:14.936 [ERROR] [system.err]    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:53)
10:10:14.936 [ERROR] [system.err]    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:148)
10:10:14.936 [ERROR] [system.err]    at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:33)
10:10:14.936 [ERROR] [system.err]    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:112)
10:10:14.936 [ERROR] [system.err]    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:106)
10:10:14.936 [ERROR] [system.err]    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
10:10:14.937 [ERROR] [system.err]    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:63)
10:10:14.937 [ERROR] [system.err]    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)
10:10:14.937 [ERROR] [system.err]    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:92)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:67)
10:10:14.937 [ERROR] [system.err]    at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:31)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:43)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:42)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
10:10:14.937 [ERROR] [system.err]    at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:79)
10:10:14.937 [ERROR] [system.err]    at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:51)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:54)
10:10:14.937 [ERROR] [system.err]    at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:173)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:250)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:217)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:33)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:210)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:174)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.Main.doAction(Main.java:33)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
10:10:14.937 [ERROR] [system.err]    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
10:10:14.937 [ERROR] [system.err]    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
10:10:14.937 [ERROR] [system.err]    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
10:10:14.937 [ERROR] [system.err]    at java.lang.reflect.Method.invoke(Method.java:483)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:60)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:37)
10:10:14.937 [ERROR] [system.err]    at org.gradle.launcher.GradleMain.main(GradleMain.java:24)




三. buildListener.projectsEvaluated发送通知

文件路径:

subprojects\core\src\main\java\org\gradle\initialization\DefaultGradleLauncher.java

1
2
3
if  (!gradle.getStartParameter().isConfigureOnDemand()) {
       buildListener.projectsEvaluated(gradle);
}

发送projectsEvaluated通知



四. 至此Configure阶段完成

这个阶段主要load了配置文件中的各种plugin;另外它的调用方法是通过加载生成的class文件来进行的。

1
D:\gradle_jar_cache\caches\3.1-snapshot-1\scripts-remapped\quality_cjfs2g3ij3bqjjsmf9bhahspf\2n69on6v0v04xd0c8c445muqy\dsld7eae713beda1bd9e69f8461da734880\classes

这样不同的配置文件可以用不同的类来执行加载动作,而代码保持一致。


接下来编译进入build阶段。

1
2
// After this point, the GradleLauncher cannot be reused
stage = Stage.Build;






     本文转自rongwei84n 51CTO博客,原文链接:http://blog.51cto.com/483181/1929709 ,如需转载请自行联系原作者
相关文章
|
Android开发
IDEA编译gradle提示This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open this project, please retry with version 2020.3.1 or newer.
IDEA编译gradle提示This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open this project, please retry with version 2020.3.1 or newer.
696 1
|
6天前
|
Java Apache Maven
在STS里使用Gradle编译Apache POI5.0.0
在STS里使用Gradle编译Apache POI5.0.0
|
6天前
|
Java Linux 开发工具
Azkaban【部署 01】Linux环境 CentOS Linux release 7.5.1804安装配置azkaban-3.70.0编译阶段(附安装包及gradle-4.6资源)
【2月更文挑战第4天】Linux环境 CentOS Linux release 7.5.1804安装配置azkaban-3.70.0编译阶段(附安装包及gradle-4.6资源)
39 1
|
6天前
|
开发工具 Android开发 开发者
Android 项目编译 Gradle 配置说明
Android 项目编译 Gradle 配置说明
170 0
|
7月前
|
Java 数据库连接 API
Gradle依赖管理:编译时和运行时依赖的区别
Gradle依赖管理:编译时和运行时依赖的区别
50 0
|
8月前
|
Java 开发工具 Maven
Android 编译 gradle 内存 OOM 解决之路(二)
Android 编译 gradle 内存 OOM 解决之路
|
8月前
|
Java Android开发
Android 编译 gradle 内存 OOM 解决之路(一)
Android 编译 gradle 内存 OOM 解决之路
|
9月前
|
Java Shell 数据处理
Android 根目录下和应用目录下的build.gradle的详解,以及groovy语法的讲解
Android 根目录下和应用目录下的build.gradle的详解,以及groovy语法的讲解
163 0
|
Java API Android开发
通过自定义Gradle插件修改编译后的class文件
通过自定义Gradle插件修改编译后的class文件
通过自定义Gradle插件修改编译后的class文件
|
Java Maven Android开发
使用idea和gradle编译spring5源码的方法步骤
使用idea和gradle编译spring5源码的方法步骤
使用idea和gradle编译spring5源码的方法步骤