From 15c0fdaf3f45be07efff63c0f5678b639badcef3 Mon Sep 17 00:00:00 2001 From: wangshichang Date: Mon, 5 Jul 2021 12:02:29 +0800 Subject: [PATCH] [feature] upgrade gradle version && chang dsl to extension. --- .../.gitignore | 0 plugin/PeaPod/build.gradle | 16 +++ .../proguard-rules.pro | 0 .../PeaPod/src/main/groovy/pea/pod/Log.java | 118 ++++++++++++++++++ .../src/main/groovy/pea/pod/Pea.groovy} | 4 +- .../main/groovy/pea/pod/PeaPodPlugin.groovy} | 77 ++++++------ .../groovy/pea/pod/extension/PeaPodExt.groovy | 95 ++++++++++++++ .../gradle-plugins/pea-pod-plugin.properties | 1 + plugin/build.gradle | 4 +- plugin/gradle/wrapper/gradle-wrapper.jar | Bin 54708 -> 54417 bytes .../gradle/wrapper/gradle-wrapper.properties | 3 +- plugin/greenbean-pods-plugin/build.gradle | 29 ----- .../groovy/greenbean/pods/SpecInternal.groovy | 19 --- .../greenbean-pods-plugin.properties | 1 - plugin/settings.gradle | 2 +- 15 files changed, 273 insertions(+), 96 deletions(-) rename plugin/{greenbean-pods-plugin => PeaPod}/.gitignore (100%) create mode 100644 plugin/PeaPod/build.gradle rename plugin/{greenbean-pods-plugin => PeaPod}/proguard-rules.pro (100%) create mode 100644 plugin/PeaPod/src/main/groovy/pea/pod/Log.java rename plugin/{greenbean-pods-plugin/src/main/groovy/greenbean/pods/GreenBean.groovy => PeaPod/src/main/groovy/pea/pod/Pea.groovy} (98%) rename plugin/{greenbean-pods-plugin/src/main/groovy/greenbean/pods/GreenBeanPods.groovy => PeaPod/src/main/groovy/pea/pod/PeaPodPlugin.groovy} (66%) create mode 100644 plugin/PeaPod/src/main/groovy/pea/pod/extension/PeaPodExt.groovy create mode 100644 plugin/PeaPod/src/main/resources/META-INF/gradle-plugins/pea-pod-plugin.properties delete mode 100644 plugin/greenbean-pods-plugin/build.gradle delete mode 100644 plugin/greenbean-pods-plugin/src/main/groovy/greenbean/pods/SpecInternal.groovy delete mode 100644 plugin/greenbean-pods-plugin/src/main/resources/META-INF/gradle-plugins/greenbean-pods-plugin.properties diff --git a/plugin/greenbean-pods-plugin/.gitignore b/plugin/PeaPod/.gitignore similarity index 100% rename from plugin/greenbean-pods-plugin/.gitignore rename to plugin/PeaPod/.gitignore diff --git a/plugin/PeaPod/build.gradle b/plugin/PeaPod/build.gradle new file mode 100644 index 0000000..9598ea2 --- /dev/null +++ b/plugin/PeaPod/build.gradle @@ -0,0 +1,16 @@ +apply plugin: 'groovy' + +dependencies { + compile gradleApi() + compile localGroovy() + compile fileTree(dir: 'libs', include: ['*.jar']) +} + +buildscript { + repositories { + jcenter() + } + dependencies { + + } +} \ No newline at end of file diff --git a/plugin/greenbean-pods-plugin/proguard-rules.pro b/plugin/PeaPod/proguard-rules.pro similarity index 100% rename from plugin/greenbean-pods-plugin/proguard-rules.pro rename to plugin/PeaPod/proguard-rules.pro diff --git a/plugin/PeaPod/src/main/groovy/pea/pod/Log.java b/plugin/PeaPod/src/main/groovy/pea/pod/Log.java new file mode 100644 index 0000000..5f40543 --- /dev/null +++ b/plugin/PeaPod/src/main/groovy/pea/pod/Log.java @@ -0,0 +1,118 @@ +package pea.pod; + +import java.io.PrintWriter; +import java.io.StringWriter; + +public class Log { + + private static LogImp debugLog = new LogImp() { + + @Override + public void v(final String tag, final String msg, final Object... obj) { + String log = obj == null ? msg : String.format(msg, obj); + System.out.println(String.format("[VERBOSE][%s]%s", tag, log)); + } + + @Override + public void i(final String tag, final String msg, final Object... obj) { + String log = obj == null ? msg : String.format(msg, obj); + System.out.println(String.format("[INFO][%s]%s", tag, log)); + } + + @Override + public void d(final String tag, final String msg, final Object... obj) { + String log = obj == null ? msg : String.format(msg, obj); + System.out.println(String.format("[DEBUG][%s]%s", tag, log)); + } + + @Override + public void w(final String tag, final String msg, final Object... obj) { + String log = obj == null ? msg : String.format(msg, obj); + System.out.println(String.format("[WARN][%s]%s", tag, log)); + } + + @Override + public void e(final String tag, final String msg, final Object... obj) { + String log = obj == null ? msg : String.format(msg, obj); + System.out.println(String.format("[ERROR][%s]%s", tag, log)); + } + + @Override + public void printErrStackTrace(String tag, Throwable tr, String format, Object... obj) { + String log = obj == null ? format : String.format(format, obj); + if (log == null) { + log = ""; + } + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + tr.printStackTrace(pw); + log += " " + sw.toString(); + System.out.println(String.format("[ERROR][%s]%s", tag, log)); + } + }; + + private static LogImp logImp = debugLog; + + private Log() { + } + + public static void setLogImp(LogImp imp) { + logImp = imp; + } + + public static LogImp getImpl() { + return logImp; + } + + public static void v(final String tag, final String msg, final Object... obj) { + if (logImp != null) { + logImp.v(tag, msg, obj); + } + } + + public static void e(final String tag, final String msg, final Object... obj) { + if (logImp != null) { + logImp.e(tag, msg, obj); + } + } + + public static void w(final String tag, final String msg, final Object... obj) { + if (logImp != null) { + logImp.w(tag, msg, obj); + } + } + + public static void i(final String tag, final String msg, final Object... obj) { + if (logImp != null) { + logImp.i(tag, msg, obj); + } + } + + public static void d(final String tag, final String msg, final Object... obj) { + if (logImp != null) { + logImp.d(tag, msg, obj); + } + } + + public static void printErrStackTrace(String tag, Throwable tr, final String format, final Object... obj) { + if (logImp != null) { + logImp.printErrStackTrace(tag, tr, format, obj); + } + } + + public interface LogImp { + + void v(final String tag, final String msg, final Object... obj); + + void i(final String tag, final String msg, final Object... obj); + + void w(final String tag, final String msg, final Object... obj); + + void d(final String tag, final String msg, final Object... obj); + + void e(final String tag, final String msg, final Object... obj); + + void printErrStackTrace(String tag, Throwable tr, final String format, final Object... obj); + + } +} diff --git a/plugin/greenbean-pods-plugin/src/main/groovy/greenbean/pods/GreenBean.groovy b/plugin/PeaPod/src/main/groovy/pea/pod/Pea.groovy similarity index 98% rename from plugin/greenbean-pods-plugin/src/main/groovy/greenbean/pods/GreenBean.groovy rename to plugin/PeaPod/src/main/groovy/pea/pod/Pea.groovy index a302bd7..52b67e6 100644 --- a/plugin/greenbean-pods-plugin/src/main/groovy/greenbean/pods/GreenBean.groovy +++ b/plugin/PeaPod/src/main/groovy/pea/pod/Pea.groovy @@ -1,4 +1,4 @@ -package greenbean.pods +package pea.pod /** * DSL 基础脚本 @@ -7,7 +7,7 @@ package greenbean.pods * @description Basic Script * @since 2018.11.7 */ -abstract class GreenBean extends Script { +abstract class Pea extends Script { public static ArrayList pods = new ArrayList<>() diff --git a/plugin/greenbean-pods-plugin/src/main/groovy/greenbean/pods/GreenBeanPods.groovy b/plugin/PeaPod/src/main/groovy/pea/pod/PeaPodPlugin.groovy similarity index 66% rename from plugin/greenbean-pods-plugin/src/main/groovy/greenbean/pods/GreenBeanPods.groovy rename to plugin/PeaPod/src/main/groovy/pea/pod/PeaPodPlugin.groovy index 8641929..ae3d4cd 100644 --- a/plugin/greenbean-pods-plugin/src/main/groovy/greenbean/pods/GreenBeanPods.groovy +++ b/plugin/PeaPod/src/main/groovy/pea/pod/PeaPodPlugin.groovy @@ -1,34 +1,32 @@ -package greenbean.pods +package pea.pod import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.initialization.Settings import org.gradle.api.plugins.PluginAware +import pea.pod.extension.PeaPodExt /** - * Green Bean Pods + * PeaPodPlugin * - * @since 2018.11.7 - * @author jacky + * @author JackyWang since 2018.11.7 */ -class GreenBeanPods implements Plugin { +class PeaPodPlugin implements Plugin { - private String dslPath = "greenbean.pods/PodsSpec.groovy" + def TAG = "PeaPodPlugin" + def dslPath = "gradle/pea_pod.gradle" + PeaPodExt peaPodExtension @Override void apply(PluginAware pluginAware) { - def isInclude = pluginAware instanceof Settings - def isReplace = pluginAware instanceof Project - if (isInclude) { - includePods(pluginAware) - } else if (isReplace) { - replacePods(pluginAware) + peaPodExtension = project.getExtensions().create("PeaPod", PeaPodExt) + if (pluginAware instanceof Settings) { + includeStage(pluginAware) + } else if (pluginAware instanceof Project) { + projectStage(pluginAware) } } - /** - * 加载依赖描述 - */ private void evaluateDSL(String path) { def shell = new GroovyShell(this.getClass().getClassLoader()) // 加载内部DSL @@ -47,11 +45,11 @@ class GreenBeanPods implements Plugin { * @param pluginAware * @return */ - void includePods(PluginAware pluginAware) { + def includeStage(PluginAware pluginAware) { def settings = (Settings) pluginAware def rootDir = settings.rootDir - evaluateDSL(rootDir.path + File.separator + dslPath) - GreenBean.pods.each { pod -> +// evaluateDSL(rootDir.path + File.separator + dslPath) + peaPodExtension.peaPods.each { pod -> if (pod.on_off) { if (pod.path == null && pod.absPath == null) { return @@ -67,44 +65,40 @@ class GreenBeanPods implements Plugin { def proc = pod.cmd.execute() def outputStream = new StringBuffer() proc.waitForProcessOutput(outputStream, System.err) - println "执行Hook命令:" + pod.cmd + " 结果:" + outputStream.toString() + Log.i(TAG, "exec hook cmd:" + pod.cmd + " result:" + outputStream.toString()) } - // 切换分支 + // checkout branch. if (pod.branch != null && !pod.branch.isEmpty()) { String cmd = "git -C " + path + " checkout " + pod.branch def proc = cmd.execute() def outputStream = new StringBuffer() proc.waitForProcessOutput(outputStream, System.err) - println "模块:" + pod.name + " 检出分支:" + pod.branch + " 结果:" + outputStream.toString() + Log.i(TAG, "module:" + pod.name + " checkout:" + pod.branch + " result:" + outputStream.toString()) } def projectName = ":" + pod.name settings.include(projectName) settings.project(projectName).projectDir = new File(path) - println("被包含的模块 名字:" + pod.name + " 路径:" + path) + Log.i(TAG, "included module name:" + pod.name + " path:" + path) } } } - /** - * 动态替换依赖 - * @param pluginAware - * @return - */ - void replacePods(PluginAware pluginAware) { + def projectStage(PluginAware pluginAware) { def project = (Project) pluginAware - evaluateDSL(project.rootDir.path + File.separator + dslPath) +// evaluateDSL(project.rootDir.path + File.separator + dslPath) + def peaPods = peaPodExtension.peaPods project.afterEvaluate { //寻找当前节点 - def currentItem = GreenBean.pods.find { + def currentNode = peaPods.find { project.name == it.name } - if (currentItem == null) return + if (currentNode == null) return // 寻找子节点 - List seeds = currentItem.seeds + List seeds = currentNode.seeds if (seeds == null) return seeds.each { seedName -> // 寻找子节点 - def seed = GreenBean.pods.find { + def seed = peaPods.find { it.name == seedName } if (seed == null) return @@ -120,18 +114,23 @@ class GreenBeanPods implements Plugin { excludeModule = seed.name map.put("module", excludeModule) map.put("group", excludeGroup) - project.configurations.compile.exclude(map) +// project.configurations.compile.exclude(map) + project.configurations.each { + it.exclude(map) + } } else { seed.excludes.each { Map map = new HashMap<>() excludeModule = it map.put("module", excludeModule) map.put("group", excludeGroup) - project.configurations.compile.exclude(map) + project.configurations.each { + it.exclude(map) + } } } - println("Project:" + currentItem.name + " exclude online dependence,group:" + excludeGroup + " module:" + excludeModule) - // 添加本地依赖 + Log.i(TAG, "Project:" + currentNode.name + " exclude online dependence, group:" + excludeGroup + " module:" + excludeModule) + // add local module. StringBuilder buildTypes = new StringBuilder() if (seed.buildTypes == null || seed.buildTypes.size() == 0) { buildTypes.append("api") @@ -142,11 +141,11 @@ class GreenBeanPods implements Plugin { if (project.configurations.findByName(buildType) != null) { project.dependencies.add(buildType, project.dependencies.project([path: ":" + seed.name])) } else { - System.err.println "Replace dependency error , build type " + buildType + " not exists." + Log.e(TAG, "Replace dependency error , build type " + buildType + " not exists.") } } } - println("Project:" + currentItem.name + " add local dependence,config name:" + buildTypes.toString() + " path:" + seed.name) + Log.i(TAG, "Project:" + currentNode.name + " add local dependence, build type:" + buildTypes.toString() + " path:" + seed.name) } } } diff --git a/plugin/PeaPod/src/main/groovy/pea/pod/extension/PeaPodExt.groovy b/plugin/PeaPod/src/main/groovy/pea/pod/extension/PeaPodExt.groovy new file mode 100644 index 0000000..83827f5 --- /dev/null +++ b/plugin/PeaPod/src/main/groovy/pea/pod/extension/PeaPodExt.groovy @@ -0,0 +1,95 @@ +package pea.pod.extension; + +public class PeaPodExt { + + def peaPods = new ArrayList() + + PeaPodExt() {} + + def peaPods(peaPods) { + this.peaPods = peaPods + } + + def getPeaPods() { + return peaPods + } + + @Override + public String toString() { + return "PeaPodExt{" + + "peaPods=" + peaPods + + '}'; + } + + class PeaPod { + + def on_off + def name + def group + def path + def absPath + def branch + def cmd + def excludes = new ArrayList<>() + def buildTypes = new ArrayList<>() + def seeds = new ArrayList<>() + + void on_off(boolean on_off) { + this.on_off = on_off + } + + void name(String name) { + this.name = name + } + + void group(String group) { + this.group = group + } + + void path(String path) { + this.path = path + } + + void absPath(String absPath) { + this.absPath = absPath + } + + void branch(String branch) { + this.branch = branch + } + + void cmd(String cmd) { + this.cmd = cmd + } + + void excludes(ArrayList excludes) { + this.excludes = excludes + } + + void buildTypes(ArrayList buildTypes) { + this.buildTypes = buildTypes + } + + void seeds(ArrayList seeds) { + this.seeds = seeds + } + + @Override + public String toString() { + return "PeaPodExtension{" + + "on_off=" + on_off + + ", name='" + name + '\'' + + ", group='" + group + '\'' + + ", path='" + path + '\'' + + ", absPath='" + absPath + '\'' + + ", branch='" + branch + '\'' + + ", cmd='" + cmd + '\'' + + ", excludes=" + excludes + + ", buildTypes=" + buildTypes + + ", seeds=" + seeds + + '}'; + } + } + + +} diff --git a/plugin/PeaPod/src/main/resources/META-INF/gradle-plugins/pea-pod-plugin.properties b/plugin/PeaPod/src/main/resources/META-INF/gradle-plugins/pea-pod-plugin.properties new file mode 100644 index 0000000..692eecd --- /dev/null +++ b/plugin/PeaPod/src/main/resources/META-INF/gradle-plugins/pea-pod-plugin.properties @@ -0,0 +1 @@ +implementation-class=pea.pod.PeaPodPlugin \ No newline at end of file diff --git a/plugin/build.gradle b/plugin/build.gradle index a4d2569..8c063e7 100644 --- a/plugin/build.gradle +++ b/plugin/build.gradle @@ -1,5 +1,3 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - buildscript { repositories { @@ -8,7 +6,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.1.2' + classpath 'com.android.tools.build:gradle:3.5.0' } } diff --git a/plugin/gradle/wrapper/gradle-wrapper.jar b/plugin/gradle/wrapper/gradle-wrapper.jar index 7a3265ee94c0ab25cf079ac8ccdf87f41d455d42..758de960ec7947253b058ff79c88ce51f3abe08a 100644 GIT binary patch delta 23109 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

>Y0qoIt?wB%nO@p&gUI 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 lv_yyfWdpa?w36n65=6@+niTCwLyU5 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 diff --git a/plugin/gradle/wrapper/gradle-wrapper.properties b/plugin/gradle/wrapper/gradle-wrapper.properties index 7176a26..2d80b69 100644 --- a/plugin/gradle/wrapper/gradle-wrapper.properties +++ b/plugin/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Sun Jun 03 15:57:47 CST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip diff --git a/plugin/greenbean-pods-plugin/build.gradle b/plugin/greenbean-pods-plugin/build.gradle deleted file mode 100644 index bc0b938..0000000 --- a/plugin/greenbean-pods-plugin/build.gradle +++ /dev/null @@ -1,29 +0,0 @@ -apply plugin: 'groovy' - -dependencies { - compile gradleApi() - compile localGroovy() - compile fileTree(dir: 'libs', include: ['*.jar']) -} - -apply plugin: 'com.novoda.bintray-release' - -buildscript { - repositories { - jcenter() - } - dependencies { - classpath 'com.novoda:bintray-release:0.9' - } -} - -// upload cmd: ./gradlew clean build bintrayUpload -publish { - userOrg = 'jackyjacky' - groupId = 'tech.jackywang' - artifactId = 'greenbean-pods-plugin' - publishVersion = '0.0.3' - licences = ["GPL-3.0"] - desc = 'https://github.com/JackyAndroid/GreenBeanPods' - website = 'https://github.com/JackyAndroid/GreenBeanPods' -} \ No newline at end of file diff --git a/plugin/greenbean-pods-plugin/src/main/groovy/greenbean/pods/SpecInternal.groovy b/plugin/greenbean-pods-plugin/src/main/groovy/greenbean/pods/SpecInternal.groovy deleted file mode 100644 index bcd4a03..0000000 --- a/plugin/greenbean-pods-plugin/src/main/groovy/greenbean/pods/SpecInternal.groovy +++ /dev/null @@ -1,19 +0,0 @@ -package greenbean.pods - -/** - * 内部依赖描述文件,减少外部描述复杂度 - */ -class SpecInternal { - - static String text = ''' - - import xx - @groovy.transform.BaseScript xx xx - - pod { - on_off false - name "sample" - path "sample/path" - } - ''' -} \ No newline at end of file diff --git a/plugin/greenbean-pods-plugin/src/main/resources/META-INF/gradle-plugins/greenbean-pods-plugin.properties b/plugin/greenbean-pods-plugin/src/main/resources/META-INF/gradle-plugins/greenbean-pods-plugin.properties deleted file mode 100644 index a3b9f28..0000000 --- a/plugin/greenbean-pods-plugin/src/main/resources/META-INF/gradle-plugins/greenbean-pods-plugin.properties +++ /dev/null @@ -1 +0,0 @@ -implementation-class=greenbean.pods.GreenBeanPods \ No newline at end of file diff --git a/plugin/settings.gradle b/plugin/settings.gradle index 077edec..392caa6 100644 --- a/plugin/settings.gradle +++ b/plugin/settings.gradle @@ -1 +1 @@ -include ':greenbean-pods-plugin' \ No newline at end of file +include ':PeaPod' \ No newline at end of file