Gradle非常用腳本

  1. 獲取項(xiàng)目buildscript中依賴的classpath
project.rootProject.buildscript.configurations.each {
    if (it.name == ScriptHandler.CLASSPATH_CONFIGURATION) { // classpath
        it.resolvedConfiguration.firstLevelModuleDependencies.each {
            println("${it.moduleGroup}:${it.moduleName}:${it.moduleVersion}")
        }
    }
}
  1. 獲取project下所有dependencies
project.configurations.each {
    Configuration conf ->
        Logger.info("當(dāng)前:Configuration--->" + conf.name)
        if (conf.name.toLowerCase().contains(classpath)) {
            Map<String, List<MoonDependency>> listMap = new HashMap<>()
            // 獲取所有依賴信息
            conf.incoming.resolutionResult.root.dependencies.each { dr ->
                resolveDependencies(dr, listMap)
            }
        }
}


static Map<String, List<MoonDependency>> 
resolveDependencies(DependencyResult dr, Map<String, List<MoonDependency>> listMap) {
    def depName = dr.requested.displayName
    if (dr == null || depName.contains("project")) {
        Logger.warn("使用project依賴--->" + depName)
        return
    }
    String[] depSplit = depName.split(":")
    if (depSplit.length < 3) {
        Logger.warn("本地依賴--->" + depName)
        return
    }
    MoonDependency dependency = new MoonDependency()
    dependency.groupId = depSplit[0]
    dependency.artifactId = depSplit[1]
    dependency.version = depSplit[2]
    if (depSplit[2].contains("{strictly")) {
        dependency.isReally = true
        dependency.version = depSplit[2]
                .replace("{strictly", "")
                .replace("}", "")
                .replace(" ", "")
    }

    def name = depSplit[0] + ":" + depSplit[1]
    def list = listMap.get(name)
    if (list == null) {
        list = new ArrayList<MoonDependency>()
        listMap.put(name, list)
    }
    list.add(dependency)

    return listMap
}


class MoonDependency {
    String groupId
    String artifactId
    String version
    boolean isReally
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 說明 本文主要從實(shí)現(xiàn)原理和代碼層面介紹Gradle開發(fā)相關(guān)知識(shí)。關(guān)于本文中提到的、Gradle中的基本概念等內(nèi)容,...
    搬磚的小明閱讀 8,138評(píng)論 1 33
  • Gradle 是一款構(gòu)建系統(tǒng)工具,它的 DSL 基于 Groovy 實(shí)現(xiàn)。Gradle 構(gòu)建的大部分功能都是通過插...
    任教主來也閱讀 3,255評(píng)論 3 6
  • 在 Android Studio 構(gòu)建的項(xiàng)目中,基于 Gradle 進(jìn)行項(xiàng)目的構(gòu)建,同時(shí)使用 Android DS...
    Ant_way閱讀 7,589評(píng)論 0 16
  • 說明 本文主要介紹和Gradle關(guān)系密切、相對(duì)不容易理解的配置,偏重概念介紹。部分內(nèi)容是Android特有的(例如...
    搬磚的小明閱讀 16,157評(píng)論 1 62
  • Gradle 作為一個(gè)現(xiàn)代的基于 JVM 自動(dòng)化構(gòu)建工具, 它拋棄了 Maven 和 Ant 使用 xml 配置項(xiàng)...
    dengzii閱讀 377評(píng)論 0 1

友情鏈接更多精彩內(nèi)容