赞
踩
基础库以aar的形式发布到公司Maven仓库,供业务开发同事依赖调用,这样的好处很多可以方便代码权限管理、团队协作开发、代码复用等,但是如果你的基础库使用的是Kotlin编写的,在发布后业务方调用时候会看不到源码,也不能debug调试,给联调工作带来了一些问题
isAAR=false // 默认依赖源码,值为false
include 'basicSource'
project(':basicSource').projectDir = new File(settingsDir, '../MoonKit/basicSource')
// 编译和发布的配置 if (project.rootProject.file('local.properties').exists()) { def properties = new Properties() def inputStream = project.rootProject.file('local.properties').newDataInputStream() properties.load(inputStream) inputStream.close() if (properties.containsKey("isAAR")) { boolean isAARRun = properties.getProperty("isAAR").toBoolean() if (isAARRun) { // 依赖aar implementation("com.moon.library:module-common:${MoonKit}") } else { // 依赖源码 println("----- ${project.name} with project ----") implementation project(':basicSource') } } else { println("----- ${project.name} with project ----") implementation project(':basicSource') } }
这样通过自定义的开关可以动态切换源码和AAR依赖了,但是
你确定可以拿到源码的权限吗?
给你权限了如果是多工程,版本控制也很麻烦?
这种手动控制是不是还有上线前忘记修改的问题?
推荐采用这种方式,优点如下:
只需要我们修改下发布配置即可具体实现:
apply plugin: 'maven' repositories { mavenLocal() mavenCentral() } uploadArchives { repositories { mavenDeployer { def deployTypeUrl if (project.ext.pomVersion.toLowerCase().contains('snapshot')) { deployTypeUrl = snapshotUrl } else { deployTypeUrl = releaseUrl } pom.groupId = "com.moon.library" pom.artifactId = project.ext.pomArtifactId pom.version = LocalKit pom.packaging = "aar" repository(url: deployTypeUrl) { authentication(userName: mavenName, password: mavenPassword) } } } //上传源码task task sourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier = 'sources' } artifacts { // 将 sourcesJar 看做 artifact,交给 archives 管理 archives sourcesJar } doLast { println "Deployed success => ${project.ext.pomArtifactId}:${project.ext.pomVersion}" } }
就是这么简单增加了task,问题解决。
有了源码debug依赖的aar库自然不是问题,以上只是个人实际开发中的一点经验,希望可以帮到遇到相同问题的同学。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。