nearbyren / nearby-home

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

JitPack 步骤

步骤一 项目根目录 build.gradle 添加

classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'


步骤二 项目module目录 build.gradle 添加

plugins { //... id 'maven-publish' }

afterEvaluate { publishing { publications { release(MavenPublication) { from components.release groupId = 'ren.nearby.ren.lib.http' artifactId = 'http' version = '1.0.0' } } } }

动态依赖本地组件与远程依赖aar步骤

1.项目根目录创建module_dependency.json文件

{ "//useModuleAll": "true-全部使用本地依赖 false-根据useModule决定依赖", "//useModule": "true-当前组件使用本地依赖 false-当前组件使用远程aar依赖", "//module_name": "本地组件名称", "//module_dir": "本地组件路径", "//module_group": "远程aar依赖路径", "useModuleAll": false, "list": [ { "useModule": false, "module_name": "share_export", "module_dir": "../nearby-share/share_export", "module_group": "ren.nearby.share_export:share-export" }, { "useModule": false, "module_name": "share_module", "module_dir": "../nearby-share/share_module", "module_group": "ren.nearby.share_module:share-module" } ] }

2.项目根目录创建module_dependency.gradle文件

import groovy.json.JsonSlurper
// 应用该文件的时候,执行该方法
includeAndSwitchModuleDep()

def includeAndSwitchModuleDep() {
try {
    // module依赖的配置信息文件路径,json格式
    def moduleDepConfigDir = "module_dependency.json"
    // 解析json配置
    def json = file(moduleDepConfigDir).getText()
    def jsonSlurper = new JsonSlurper()
    def obj = jsonSlurper.parseText(json)
    println "obj=$obj"
    // 遍历配置信息列表,找出 useModule==true 的模块,动态include
    if (obj.useModuleAll){
        obj.list.forEach{
        include ":${it.module_name}"
        project(":${it.module_name}").projectDir = file(it.module_dir)
        }
    }else {
        obj.list.forEach{
        if (it.useModule) {
        include ":${it.module_name}"
        project(":${it.module_name}").projectDir = file(it.module_dir)
        }
    }
}
    // aar依赖 与 module依赖 动态切换
    switchToModuleDependency(obj)
        } catch (Exception e) {
        e.printStackTrace()
    }
}

def switchToModuleDependency(Object moduleDepObj){
// projectsEvaluated方法是所有module构建完成后执行的回调
gradle.projectsEvaluated {
gradle.rootProject.subprojects {
println "project name is $it"

            project.configurations.all { Configuration ->
                resolutionStrategy {
                    dependencySubstitution {
                        if (moduleDepObj.useModuleAll){
                            moduleDepObj.list.forEach {
                                substitute module(it.module_group) with project(":${it.module_name}")
                            }
                        }else {
                            moduleDepObj.list.forEach {
                                if (it.useModule) {
                                    substitute module(it.module_group) with project(":${it.module_name}")
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

3.在module gradle添加远程依赖库

implementation('ren.nearby.share_export:share-export:1.0.0')

4.应用动态本地module或者远程方式在项目根目录下settings.gradle配置

try { apply from: 'module_dependency.gradle' } catch (Exception e) { e.printStackTrace() }

5.在settings.gradle配置 拉取远程aar

maven { url = uri("https://maven.pkg.github.com/nearbyren/nearby-share") credentials { username = "nearbyren" password = "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" } }

'maven-publish' GitHubPackages 构建 远程aar maven 仓库步骤

1.在module目下创建maven.gradle文件

apply plugin: 'maven-publish'

task sourceJar(type: Jar) { println("上传代码到maven仓库源码路径:${android.sourceSets.main.java.getSrcDirs()}") from android.sourceSets.main.java.getSrcDirs() // 源码路径 archiveClassifier = "sources" }

afterEvaluate { publishing { // 配置maven仓库 仓库地址可配置多个 执行publish任务时 会把aar包发步到所有指定的maven仓库 repositories { RepositoryHandler handler ->

        if (!isRemoteAar.toBoolean()) {
            // 指定路径的本地仓库
            handler.mavenLocal()
            handler.maven {
                url "${rootDir}/repo"
            }
        } else {
            // 远程仓库
            handler.maven { MavenArtifactRepository mavenArtifactRepository ->
                name = "GitHubPackages"
                // maven 仓库地址
                url = uri(mavenUrl)
                // 访问仓库的 账号和密码
                credentials {
                    username = mavenUsername
                    password = mavenPassword
                }
            }
        }
    }
    publications { PublicationContainer publicationContainer ->
        // Creates a Maven publication called "release".
        release(MavenPublication) {
            // Applies the component for the release build variant.
            from components.release // 注释1:使用 Android Gradle 插件生成的组件,作为发布的内容
            //                artifact sourceJar // 上传源码
            // Library Package Name (Example : "com.frogobox.androidfirstlib")
            // NOTE : Different GroupId For Each Library / Module, So That Each Library Is Not Overwritten
            groupId = 'ren.nearby.share_export'
            // Library Name / Module Name (Example : "androidfirstlib")
            // NOTE : Different ArtifactId For Each Library / Module, So That Each Library Is Not Overwritten
            artifactId = 'share-export'
            // Version Library Name (Example : "1.0.0")
            version = '1.0.0'

            //指定路径 share_export-release.aar
            //artifact "build/outputs/aar/${project.getName()}-release.aar"
        }
    }
}

}

2.在项目根目录下gradle.properties文件配置以下内容

maven授权上传配置

mavenUrl=https://maven.pkg.github.com/nearbyren/nearby-sharehttps://maven.pkg.github.com/GitHub账户名/对应的库名称】 mavenUsername=nearbyren 【github用户名】 mavenPassword= 【此处去github申请token】 android.disableAutomaticComponentCreation=true

true-正式发布环境 false-本地调试环境

isRemoteAar=true

About


Languages

Language:Kotlin 100.0%