@@ -3,9 +3,8 @@ package com.dd.buildgradle
33import com.dd.buildgradle.exten.ComExtension
44import org.gradle.api.Plugin
55import org.gradle.api.Project
6- import org.gradle.api.Task
76
8- public class ComBuild implements Plugin<Project > {
7+ class ComBuild implements Plugin<Project > {
98
109 // 默认是app,直接运行assembleRelease的时候,等同于运行app:assembleRelease
1110 String compilemodule = " app"
@@ -14,31 +13,31 @@ public class ComBuild implements Plugin<Project> {
1413 project. extensions. create(' combuild' , ComExtension )
1514
1615 String taskNames = project. gradle. startParameter. taskNames. toString()
17- System . out. println (" taskNames is " + taskNames);
16+ System . out. println (" taskNames is " + taskNames)
1817 String module = project. path. replace(" :" , " " )
19- System . out. println (" current module is " + module);
18+ System . out. println (" current module is " + module)
2019 AssembleTask assembleTask = getTaskInfo(project. gradle. startParameter. taskNames)
2120
2221 if (assembleTask. isAssemble) {
23- fetchMainmodulename(project, assembleTask);
24- System . out. println (" compilemodule is " + compilemodule);
22+ fetchMainmodulename(project, assembleTask)
23+ System . out. println (" compilemodule is " + compilemodule)
2524 }
2625
2726 if (! project. hasProperty(" isRunAlone" )) {
2827 throw new RuntimeException (" you should set isRunAlone in " + module + " 's gradle.properties" )
2928 }
3029
3130 // 对于isRunAlone==true的情况需要根据实际情况修改其值,
32- // 但如果是false,则不用修改,该module作为一个lib,运行module:assembleRelease则发布aar到中央仓库
31+ // 但如果是false,则不用修改
3332 boolean isRunAlone = Boolean . parseBoolean((project. properties. get(" isRunAlone" )))
3433 String mainmodulename = project. rootProject. property(" mainmodulename" )
3534 if (isRunAlone && assembleTask. isAssemble) {
3635 // 对于要编译的组件和主项目,isRunAlone修改为true,其他组件都强制修改为false
3736 // 这就意味着组件不能引用主项目,这在层级结构里面也是这么规定的
3837 if (module. equals(compilemodule) || module. equals(mainmodulename)) {
39- isRunAlone = true ;
38+ isRunAlone = true
4039 } else {
41- isRunAlone = false ;
40+ isRunAlone = false
4241 }
4342 }
4443 project. setProperty(" isRunAlone" , isRunAlone)
@@ -55,32 +54,14 @@ public class ComBuild implements Plugin<Project> {
5554 }
5655 }
5756 }
58- System . out. println (" apply plugin is " + ' com.android.application' );
57+ System . out. println (" apply plugin is " + ' com.android.application' )
5958 if (assembleTask. isAssemble && module. equals(compilemodule)) {
6059 compileComponents(assembleTask, project)
6160 project. android. registerTransform(new ComCodeTransform (project))
6261 }
6362 } else {
6463 project. apply plugin : ' com.android.library'
65- System . out. println (" apply plugin is " + ' com.android.library' );
66- project. afterEvaluate {
67- Task assembleReleaseTask = project. tasks. findByPath(" assembleRelease" )
68- if (assembleReleaseTask != null ) {
69- assembleReleaseTask. doLast {
70- File infile = project. file(" build/outputs/aar/$module -release.aar" )
71- File outfile = project. file(" ../componentrelease" )
72- File desFile = project. file(" $module -release.aar" );
73- project. copy {
74- from infile
75- into outfile
76- rename {
77- String fileName -> desFile. name
78- }
79- }
80- System . out. println (" $module -release.aar copy success " );
81- }
82- }
83- }
64+ System . out. println (" apply plugin is " + ' com.android.library' )
8465 }
8566
8667 }
@@ -99,7 +80,7 @@ public class ComBuild implements Plugin<Project> {
9980 if (assembleTask. modules. size() > 0 && assembleTask. modules. get(0 ) != null
10081 && assembleTask. modules. get(0 ). trim(). length() > 0
10182 && ! assembleTask. modules. get(0 ). equals(" all" )) {
102- compilemodule = assembleTask. modules. get(0 );
83+ compilemodule = assembleTask. modules. get(0 )
10384 } else {
10485 compilemodule = project. rootProject. property(" mainmodulename" )
10586 }
@@ -109,67 +90,72 @@ public class ComBuild implements Plugin<Project> {
10990 }
11091
11192 private AssembleTask getTaskInfo (List<String > taskNames ) {
112- AssembleTask assembleTask = new AssembleTask ();
93+ AssembleTask assembleTask = new AssembleTask ()
11394 for (String task : taskNames) {
11495 if (task. toUpperCase(). contains(" ASSEMBLE" )
11596 || task. contains(" aR" )
97+ || task. toUpperCase(). contains(" INSTALL" )
11698 || task. toUpperCase(). contains(" RESGUARD" )) {
11799 if (task. toUpperCase(). contains(" DEBUG" )) {
118- assembleTask. isDebug = true ;
100+ assembleTask. isDebug = true
119101 }
120- assembleTask. isAssemble = true ;
102+ assembleTask. isAssemble = true
121103 String [] strs = task. split(" :" )
122- assembleTask. modules. add(strs. length > 1 ? strs[strs. length - 2 ] : " all" );
123- break ;
104+ assembleTask. modules. add(strs. length > 1 ? strs[strs. length - 2 ] : " all" )
105+ break
124106 }
125107 }
126108 return assembleTask
127109 }
128110
129111 /**
130112 * 自动添加依赖,只在运行assemble任务的才会添加依赖,因此在开发期间组件之间是完全感知不到的,这是做到完全隔离的关键
131- * 支持两种语法:module或者modulePackage:module ,前者之间引用module工程,后者使用componentrelease中已经发布的aar
113+ * 支持两种语法:module或者groupId:artifactId:version( @aar) ,前者之间引用module工程,后者使用maven中已经发布的aar
132114 * @param assembleTask
133115 * @param project
134116 */
135117 private void compileComponents (AssembleTask assembleTask , Project project ) {
136- String components;
118+ String components
137119 if (assembleTask. isDebug) {
138120 components = (String ) project. properties. get(" debugComponent" )
139121 } else {
140122 components = (String ) project. properties. get(" compileComponent" )
141123 }
142124
143125 if (components == null || components. length() == 0 ) {
144- System . out. println (" there is no add dependencies " );
145- return ;
126+ System . out. println (" there is no add dependencies " )
127+ return
146128 }
147129 String [] compileComponents = components. split(" ," )
148130 if (compileComponents == null || compileComponents. length == 0 ) {
149- System . out. println (" there is no add dependencies " );
150- return ;
131+ System . out. println (" there is no add dependencies " )
132+ return
151133 }
152134 for (String str : compileComponents) {
153- System . out. println (" comp is " + str);
135+ System . out. println (" comp is " + str)
154136 if (str. contains(" :" )) {
155- File file = project . file( " ../componentrelease/ " + str . split( " : " )[ 1 ] + " -release.aar " )
156- if (file . exists()) {
157- project . dependencies . add( " compile " , str + " -release@aar " )
158- System . out . println ( " add dependencies : " + str + " -release@aar " );
159- } else {
160- throw new RuntimeException (str + " not found ! maybe you should generate a new one " )
161- }
137+ /**
138+ * 示例语法:groupId:artifactId:version( @aar)
139+ * compileComponent=com.luojilab.reader:readercomponent:1.0.0
140+ * 注意,前提是已经将组件aar文件发布到maven上,并配置了相应的repositories
141+ */
142+ project . dependencies . add( " compile " , str )
143+ System . out . println ( " add dependencies lib : " + str)
162144 } else {
145+ /**
146+ * 示例语法:module
147+ * compileComponent=readercomponent,sharecomponent
148+ */
163149 project. dependencies. add(" compile" , project. project(' :' + str))
164- System . out. println (" add dependencies project : " + str);
150+ System . out. println (" add dependencies project : " + str)
165151 }
166152 }
167153 }
168154
169155 private class AssembleTask {
170- boolean isAssemble = false ;
171- boolean isDebug = false ;
172- List<String > modules = new ArrayList<> ();
156+ boolean isAssemble = false
157+ boolean isDebug = false
158+ List<String > modules = new ArrayList<> ()
173159 }
174160
175161}
0 commit comments