一个能管理快三源码出售多个Git仓库,又能快速切换分支的Gradle插件

背景和问题快三源码出售论坛:haozbbs.com Q1446595067
项目组件化过程中,会根据App框架、业务情况划分出各个独立的模块。通常把各个模块的代码管理分开,各自有独立Git仓库。 这样有个好处是可以按需clone部分模块的代码,再组装成一个可运行的工程。比如,业务组的同学开发某个Feature的时候,只需clone业务层部分模块的代码,不需要中间层、基础层方面的模块代码(业务层模块引用中间层、基础层模块打包上传Maven的aar)。

但在实际操作中产生的问题:

创建创建工程初期,怎么方便的clone各个Git仓库 ?手动一个一个clone显然不合适。

在工程目录结构中,各模块势必会处在根项目中,怎么避免在提交根项目时把各模块也提交了?使用 git submodule ?

根项目和各模块
如何从Feature A分支切换到Feature B分支 ?Android Studio 提供了Common branch的切换功能。但不同分支对应的模块不一时,是无法顺利切换过去的。

介绍 Gradle Repo
Gradle Repo是基于Gradle写的一个插件,用于管理多个Git仓库,支持方便快捷的切换分支。在根项目中会有一份配置清单repo.xml,用于描述模块来源、工程结构以及依赖关系。

主要做了三件事情:

从各个远程仓库clone代码到指定目录路径下。通过Git的exclude而不是submodule。
动态include模块,并模块间的依赖关系。
切换至指定分支。
使用方式
分别在根项目settings.gradle和build.gradle引用gradle-repo对应的插件

settings.gradle:

buildscript {
...
dependencies {
classpath ‘com.eastwood.tools.plugins:gradle-repo:1.0.0‘
}
}
apply plugin: ‘gradle-repo-settings‘

build.gradle:

buildscript {
...
dependencies {
classpath ‘com.eastwood.tools.plugins:gradle-repo:1.0.0‘
}
}
apply plugin: ‘gradle-repo-build‘
在根项目下创建一个repo.xml配置清单。例如:

Repo 配置清单
repo.xml 样例
<?xml version=‘1.0‘ encoding=‘UTF-8‘?>
<manifest>

<project origin="https://github.com/EastWoodYang/gradle-repo.git"
    branch="master" >

    <include name="mylibrary3"/>

</project>

<module name="app" origin="./gradle-repo-app.git">
    <dependencies>
        <api name="mylibrary2"/>
        <implementation name="mylibrary"/>
        <apiDebug name="mylibrary"/>
    </dependencies>
</module>

<module name="mylibrary" origin="https://github.com/EastWoodYang/gradle-repo-mylibrary.git"/>

<module name="mylibrary2" origin="./gradle-repo-mylibrary2.git"/>

<module name="mylibrary3" />

</manifest>
project 节点
必须且只有一个project节点,用于描述根项目。

origin : 远程Git仓库URL
branch: 分支名称
module 节点
可以定义多个module节点,每个module表示一个具有独立Git仓库的模块。

name: 模块名称,目录名称需一致且唯一;必须项。
local: 相对于根项目的路径,clone的路径为 root project / local / name,缺省时路径为 root project / name。
origin: 模块的远程Git仓库URL,支持相对路径。
branch: 模块分支名称。缺省时,同project节点的branch。
include 节点
是project的子节点,可以定义多个include节点。用于表示哪些模块和根项目同一个git仓库。

name: 模块名称
dependencies 节点
是module的子节点,可以定义多个dependencies节点。仅用于描述模块于模块之间的依赖关系。

其子节点的名称需和 Gradle Dependency Configurations 中定义的一致。

name: 模块名称
Android Studio 插件 Gradle Repo
方便对repo.xml修改后进行sync和绑定远程git仓库操作。

常见问题
是不是不需要在settings.gradle中include模块了 ?

是的,插件会自动include模块。
怎么切换到其他Feature分支?

只需修改一下repo.xml project 中的branch,然后同步一下即可。
注意!修改前确保代码已经commit或stash。尽量不要使用Android Studio右下角那个Git分支管理工具。
结语
项目已经上传至GIthub,可直接clone体验一下,打开时会自动clone其他两个模块。

原文地址:http://blog.51cto.com/13855356/2136930

时间: 2024-10-13 05:40:44

一个能管理快三源码出售多个Git仓库,又能快速切换分支的Gradle插件的相关文章

第一个python程序带快三源码出售

使用文本编辑器快三源码出售(企 娥:217 1793 408) python交互式命令行的方式写程序:好处:一下子就能得到结果 缺点:没法保存 使用编辑器可以避免这一问题 推荐两款文本编辑器: 1)sublimetext 免费使用,但不付费会出现提示框 2)notepad 免费,中文 备注:不能用word或windows自带的记事本 原因:Word保存的不是纯文本文件,而记事本会自作聪明地在文件开始的地方加上几个特殊字符(UTF-8 BOM),结果会导致程序运行出现莫名其妙的错误. 编写程序:

MongoDB的安装以及快三源码出售搭建

安装步骤:1.快三源码出售搭建:(企 娥:217 1793 408)mongodb-win32-i386-3.0.7.zip 2.解压zip文件到磁盘(注意:英文路径,不要有中文或特殊字符)3.对于解压缩目录可以修改名称(可选)例如:C:\mongodb24.在mongodb文件夹中创建两个子文件夹C:\mongodb2\data //为了存储数据C:\mongodb2\logs //为了存储日志5.在C:\mongodb2\logs中,创建一个日志文件(一个空的文本文件)C:\mongodb2

北京快_三源码出售安装、配置、常用命令

在北京快_三源码出售 Q1446595067 应用部署到线上后,需要保证应用一直处于运行状态,在遇到程序异常.报错等情况,导致 web 应用终止时,需要保证程序可以立刻重启,继续提供服务. 所以,就需要一个工具,时刻监控 web 应用的运行情况,管理该进程. Supervisor 就是解决这种需求的工具,可以保证程序崩溃后,重新把程序启动起来等功能.简介 Supervisor 是一个用 Python 写的进程管理工具,可以很方便的用来在 UNIX-like 系统(不支持 Windows)下启动.

Dubbo详细介绍与五分快3源码出售安装使用过程

随着互联网的发展,五分快3源码出售[企鹅21717-93408]网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本. 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键. 垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率. 此时,用于加速前端页面开发

全体快三源码开发Python数据分析与挖掘所需的Pandas常用知识

前言 全体快三源码开发 (http://www.1159880099.com) QQ1159880099 Pandas基于两种数据类型:series与dataframe. 一个series是一个一维的数据类型,其中每一个元素都有一个标签.series类似于Numpy中元素带标签的数组.其中,标签可以是数字或者字符串. 一个dataframe是一个二维的表结构.Pandas的dataframe可以存储许多种不同的数据类型,并且每一个坐标轴都有自己的标签.你可以把它想象成一个series的字典项.

图解快三源码红黑玩法跨度等Python变量与赋值

图解快三源码红黑玩法跨度(企鹅:212303635)[阿酋联源码论坛-aqiulian.com]等Python变量与赋值 Python是一门独特的语言,与C语言有很大区别,初学Python很多萌新表示对变量与赋值不理解,学过C的都知道,给变量赋值时,需要先指定数据类型,同时会开辟一块内存区域,用于存储值,例如: int a = 1; a 就是内存空间中的一小块区域,就像是一个大房间里面的一个小盒子,赋值就是把整数1装载到盒子里面. 现在给变量a重新赋值 a = 2; 盒子依然是那个盒子,也就是说

极速快三源码下载PHP perl 风格 常用的 正则表达的使用

极速快三源码下载 [话仙源码论坛]hxforum.com[木瓜源码论坛]papayabbs.com 企娥 2952777280 /**[话仙源码论坛]hxforum.com[木瓜源码论坛]papayabbs.com 企娥 2952777280 修饰符 I 不区分大小写的搜索 G 查找所有出现的(全局搜索) M 看做多行 默认 ^ $作为每行的开始和结尾 使用M修饰符将^ 和$ 匹配每行的开始部分 S 将字符串看做一行 忽略其中的换行符 X 忽略正则表达式中的空白和注释 U 第一次匹配后停止 元字

gin框架中自定义向log中写入极速快三源码搭建调试信息

我们在极速快三源码搭建项目的调试过程中,需要将一些自定义信息写入到log文件中,gin框架中提供了基础的Logger()方法,查看gin的文档,有如下信息:企 娥:217 1793 408 How to write log file func main() {// Disable Console Color, you don't need console color when writing the logs to file.gin.DisableConsoleColor() // Loggin

maven常用命令之吉林快三源码下载

1.mvn clean 清理 吉林快三源码下载(×××.com/h5)企 娥:217 1793 408将项目根目录下target目录清理掉 2.mvn compile 编译 将项目中.java文件编译为.class文件 3.mvn test 单元测试 单元测试类名有要求:xxxxTest.java 将项目根目录下src/test/java目录下的单元测试类都会执行 4.mvn package 打包 web project --- war包 java project --- jar包 将项目打包,