Skip to content

Latest commit

 

History

History
68 lines (43 loc) · 2.58 KB

java生态学习一.md

File metadata and controls

68 lines (43 loc) · 2.58 KB

私服仓库

架设在局域网中的特殊远程仓库,目的是代理与部署第三方构建。

特点: 1. 有则直接下载 2. 没有则通过代理下载到私服,再下载

Nexus

maven仓库管理软件

仓库概念:

  1. 代理仓库proxy
  2. 宿主仓库hosted
  3. 虚拟仓库virtual
  4. 仓库组group

仓库组是一种特殊的仓库概念,请求仓库组即可请求仓库组下管理的仓库

格式:

  1. maven1
  2. maven2(现在都是这个)

maven2与maven1最大的区别在于提速与简化配置

策略属性:

  1. Release(发布版本)
  2. Snapshot(快照版本)

构建

Android studio默认支持Gradle,属于一个client project

一个Gradle是由一个或者多个project组成,而每个project又包含了许多可构建组成的部分,通过Gradlebuild-by-convention具体定义一个project的用途。

project由一个个task组成,每一个task代表一个构建执行过程中的原子性操作,如编译,打包,生成javadoc,发布到仓库这样具体的操作。

task gradle是由一个个任务(task)完成的,基类是DefaultTask(必须继承),存在一个生命周期: 初始化阶段 -- 配置阶段 -- 执行阶段

配置阶段的代码在执行任何task时候都会跟着执行,需要执行的操作在task都是一个个action,然后组成了一个队列,通过doFirst或者是doLast来决定action在队列中的执行顺序。

排列方式,如下伪代码的顺序是2112

doLast 1
doFirst 1
doFirst 2
doLast 2

因为task对于action的执行是顺序的,而doLastdoFirst是首位部插入,先插入的自然比后插入的靠中心位置。

Gradle构建方式

gradle获取依赖

build.gradle中声明项目依赖3.0版本的common-lang3Gradle就会检查本地存储库中是否有该依赖库,如果没有就通过网络的Gradle Repository下载到本地,然后自动声明classpath

gradlemaven相比来说,maven是基于XML的配置,而gradle是采用了Groovy这种特殊语言做到了配置可编程。而且在配置上gradlemaven而言做到了沿用与简化,并且还提供了动态版本依赖,通过在版本号后 添加+来实现动态的版本管理。

关于依赖冲突的解决,MavenGradle进行依赖管理时都是采用的传递性依赖,但是如果多个依赖指向同一个依赖的不同版本就会引起依赖冲突,对于这点Gradle已经做到了较好的展示方式。