个人博客:

http://www.milovetingting.cn

Android Gradle 多项目构建

Android 项目区别

Android项目一般分为库项目,应用项目,测试项目,Android Gradle 根据这些项目分别对应3种插件:com.android.library,com.android.application,com.android.test。

Android多项目设置

定义一个工程,包含很多项目,在Gradle中,项目的结构没有那么多限制,只要在settings.gradle里配置好这些项目就可以了。

库项目引用的配置

Android库项目的引用,通过dependencies实现:

dependencies{
implements project(':plugin')
}

库项目单独发布

Maven私服搭建

搭建自己的Maven私服,推荐使用Nexus Repositories Manager。

具体的搭建如下:

1、下载。在https://www.sonatype.com/ 选择对应的软件类型,我这里选择的是OSS3版本,即免费版。 在https://www.sonatype.com/download-nexus-repo-oss 页面根据操作系统选择需要下载的应用。

2、解压。解压后有两个文件夹,nexus-3.13.0-01和sonatype-work。

3、启动。进入nexus-3.13.0-01目录下的bin目录,然后在命令行中输入./nexus start,启动nexus。

4、浏览器访问http://localhost:8081,如访问成功,即表示nexus搭建成功。以默认的管理员帐号admin,密码admin123登录,可以看到默认创建的仓库。

nexus的具体配置这里不展开讲,具体可以在网上找相关资源,这里只用默认配置。

库项目发布

新建名为TestLib的Android Library,在根目录的gradle.properties中配置如下(这里配置是为了方便统一管理,也可以直接写在library的build.gradle中):

# maven local config
#正式版本号
versionName=1.0.0
#快照版本号
snapshotVersionName=1.0-SNAPSHOT
#快照仓库地址
mavenSnapshotUrl=http://localhost:8081/repository/maven-snapshots/
#发布仓库地址
mavenReleasesUrl=http://localhost:8081/repository/maven-releases/
maven_local_username=admin
maven_local_password=admin123
#项目组 id
maven_pom_groupId=com.wangyz.plugins
#项目名称
maven_pom__artifactId=testlib
#打包类型
maven_pom__packaging=aar
maven_pom__description=test upload

在TestLib目录下的build.gradle的android节点下增加以下配置:

// type显示指定任务类型或任务, 这里指定要执行Javadoc这个task,这个task在gradle中已经定义
task androidJavadocs(type: Javadoc) {
// 设置源码所在的位置
source = android.sourceSets.main.java.sourceFiles
} // 生成javadoc.jar
task androidJavadocsJar(type: Jar) {
// 指定文档名称
classifier = 'javadoc'
from androidJavadocs.destinationDir
} // 生成sources.jar
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.sourceFiles
} // 产生相关配置文件的任务
artifacts {
archives androidSourcesJar
archives androidJavadocsJar
} //上传 到 maven 的任务
uploadArchives {
repositories.mavenDeployer { repository(url: mavenReleasesUrl) {
authentication(userName: maven_local_username, password: maven_local_password)
} snapshotRepository(url: mavenSnapshotUrl) {
authentication(userName: maven_local_username, password: maven_local_password)
} pom.project {
// 注意:【这里通过切换 versionName 的赋值来区分上传快照包还是正式包(snapshot 版本必须以 -SNAPSHOT 结尾)】
//version snapshotVersionName
version versionName
artifactId maven_pom__artifactId
groupId maven_pom_groupId
packaging maven_pom__packaging
description maven_pom__description
}
} }

命令行切换到TestLib目录下,执行gradle uploadArchives命令,执行成功后,在浏览器中可看到上传成功。

库项目的引用

在要引用的项目,如app,在项目根目录的build.gradle的allprojects节点中添加以下配置:

allprojects {
repositories {
google()
jcenter() mavenCentral()
mavenLocal() maven {
url mavenReleasesUrl
} maven {
url mavenSnapshotUrl
} maven {
url 'https://maven.google.com'
} }
}

然后在app的build.gradle中引入依赖:

dependencies {
implementation 'com.wangyz.plugins:testlib:1.0'
}

同步项目后,即可引用TestLib的相关资源。

参考以下资源,在此表示感谢!

https://www.jianshu.com/p/33d9861217bf

【Gradle】Android Gradle 多项目构建的更多相关文章

  1. android 多模块项目构建一

    项目构建之项目文件搭建: 1.在android studio中new project,如:mydemo,如在D盘下. 2.创建几个module,选择为Library. 3.项目中用到多模块,最好使用动 ...

  2. 基于Gradle的spring boot 项目构建

    今天听只是分享,听到不用maven而使用Gradle构建,就尝试了下 Java三大构建工具:Ant.Maven和Gradle Gradle是一个基于Apache Ant和Apache Maven概念的 ...

  3. Gradle入门及SpringBoot项目构建

    https://blog.csdn.net/qq_27520051/article/details/90384483 一.介绍 Gradle 是一种构建工具,它抛弃了基于XML的构建脚本,取而代之的是 ...

  4. Android hybrid App项目构建和部分基本开发问题

    1.首先是选型:Cordova+Ionic Framework,调试测试环境是Ripple Emulator.开发环境其实可以随便选,我个人选择了Eclipse,当然Android SDK+ADT也是 ...

  5. Android Gradle defaultConfig详解及实用技巧

    实际项目中,都会应用Android Gradle Plugin,根据实际中的项目模块的职责,可以具体应用如下四种插件类型. 1,apply plugin: 'com.android.applicati ...

  6. The Android Gradle Plugin and Gradle version-compatibility

    http://tools.android.com/tech-docs/new-build-system/version-compatibility Version Compatibility Post ...

  7. 【Gradle】 Gradle 综合

    Gradle User Guide:http://www.gradle.org/docs/current/userguide/userguide.html 针对它的中文翻译:http://ask.an ...

  8. 第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  9. 【转】第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建

    原文网址:http://www.cnblogs.com/smyhvae/p/4456420.html [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.c ...

  10. 《Gradle权威指南》--Android Gradle多项目构建

    No1: Android多项目设置 目录结构: MyProject/ setting.gradle app/ build.gradle libraries/ lib1/ build.gradle li ...

随机推荐

  1. day07什么是方法、方法的定义、方法的调用

    复习 1.数组 1)什么是数组 数组就是一种能够保存 多个相同数据类型的数据的变量 2)为什么使用数组 3)数组的构成 3.1)数组名 3.2)数组元素 3.3)数组长度 3.4)数组下标 4)数组的 ...

  2. 使用StampedLock

    /** * StampedLock和ReadWriteLock相比,改进之处在于:读的过程中也允许获取写锁后写入!这样一来,我们读的数据就可能不一致,所以,需要一点额外的代码来判断读的过程中是否有写入 ...

  3. Hive時間函數-年份相加減

    Hive時間函數-年份相加減 目前為止搜了很多资料,都没有找到Hive关于时间 年份,月份的处理信息,所以就自己想办法截取啦 本来是用了概数,一年365天去取几年前的日期,后来测试的发现不够精准,然后 ...

  4. WebRTC Android版本编译

    本文简单介绍如何在Ubuntu18.04 上,编译WebRTC Android版本. 安装工具 需要用到depot_tools工具来下载webrtc源码. 安装 depot_tools git 命令获 ...

  5. IT兄弟连 HTML5教程 CSS3属性特效 2D变换2

    3  scale() 方法 通过scale() 方法,元素的尺寸会增加或减少,根据给定的宽度(X轴)和高度(Y轴)参数.缩放scale()函数让元素根据中心原点对对象进行缩放.默认值是1,因此0.01 ...

  6. mysql不等于判断时,空值过滤问题

    产生根源 比如我们有三条数据,对应的列名是delete_flag,对应的数据是'normal','delete',null. 此时我们查所有不等于delete的记录,我们期望的是两条记录 normal ...

  7. 关于华为模拟器eNSP-防火墙USG6000V怎么重装镜像

    一.首先关闭eNSP软件 二.打开Oracle VM VirtualBox 三.单击VirtualBox “管理 - 虚拟介质管理”,将vfw_usg.vdi下面的子链接释放然后删除 四.最后回到主界 ...

  8. django nginx 504 time-out 错误

    报错: 分析 nginx和uwsgi整合时有三个参数可以用于设置超时时间: 1.uwsgi_connect_timeout: 默认60秒,与uwsgi-server连接的超时时间,该值不能超过75秒. ...

  9. Cesium专栏-淹没分析(附源码下载)

    Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精度,渲染质量以 ...

  10. 深入理解JavaScript程序设计

    今天没事情回顾了一下我在去年4-6月份学习JavaScript程序设计的笔记.发现书到用时方恨少,感觉自己学的还不够深,准备抽时间啃一下<JavaScript高级程序设计>,同时深入了解一 ...