架设在局域网中的特殊远程仓库,目的是代理与部署第三方构建。
特点: 1. 有则直接下载 2. 没有则通过代理下载到私服,再下载
Nexus
maven仓库管理软件
仓库概念:
- 代理仓库
proxy
- 宿主仓库
hosted
- 虚拟仓库
virtual
- 仓库组
group
仓库组是一种特殊的仓库概念,请求仓库组即可请求仓库组下管理的仓库
格式:
- maven1
- maven2(现在都是这个)
maven2与maven1最大的区别在于提速与简化配置
策略属性:
- Release(发布版本)
- Snapshot(快照版本)
Android studio
默认支持Gradle
,属于一个client
project
一个Gradle
是由一个或者多个project
组成,而每个project
又包含了许多可构建组成的部分,通过Gradle
的build-by-convention
具体定义一个project
的用途。
project
由一个个task
组成,每一个task
代表一个构建执行过程中的原子性操作,如编译,打包,生成javadoc,发布到仓库这样具体的操作。
task
gradle
是由一个个任务(task
)完成的,基类是DefaultTask
(必须继承),存在一个生命周期:
初始化阶段
-- 配置阶段
-- 执行阶段
配置阶段
的代码在执行任何task
时候都会跟着执行,需要执行的操作在task
都是一个个action
,然后组成了一个队列,通过doFirst
或者是doLast
来决定action
在队列中的执行顺序。
排列方式,如下伪代码的顺序是2
,1
,1
,2
doLast 1
doFirst 1
doFirst 2
doLast 2
因为task
对于action
的执行是顺序的,而doLast
和doFirst
是首位部插入,先插入的自然比后插入的靠中心位置。
Gradle构建方式
在build.gradle
中声明项目依赖3.0
版本的common-lang3
,Gradle
就会检查本地存储库中是否有该依赖库,如果没有就通过网络的Gradle Repository
下载到本地,然后自动声明classpath
gradle
和maven
相比来说,maven
是基于XML
的配置,而gradle
是采用了Groovy
这种特殊语言做到了配置可编程。而且在配置上gradle
对maven
而言做到了沿用与简化,并且还提供了动态版本依赖
,通过在版本号
后
添加+
来实现动态的版本管理。
关于依赖冲突
的解决,Maven
和Gradle
进行依赖管理时都是采用的传递性依赖
,但是如果多个依赖指向同一个依赖的不同版本就会引起依赖冲突,对于这点Gradle
已经做到了较好的展示方式。