一 什么是依赖管理
几乎所有的基于JVM的软件项目都需要依赖外部类库来重用现有的功能。自动化的依赖管理可以明确依赖的版本,可以解决因传递性依赖代理的版本冲突。
二 工件坐标
group、name、version
三 常用仓库——用来存放Jar的地方
公共仓库:mavenCentral和jcenter
本地仓库:mavenLocal
自定义maven仓库:也就是maven私服,一般是公司为了内部开发的安全而在公司内部搭建的maven仓库。
四 依赖传递性
B依赖A,如果C依赖B,那么C依赖A。
五 自动化依赖管理
六 依赖阶段配置
源代码:compile、runtime
测试代码:testCompile、testRuntime
依赖阶段关系
下图说明了testRuntime阶段依赖于Runtime阶段
七 添加log-back的依赖方法
1 从官网找到相关依赖
testCompile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
2 将该依赖复制到代码中,并将其改为编译阶段的依赖
3 修改源代码,增加日志功能
package com.immoc.gradle.todo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Scanner;
public class App {
static Logger log= LoggerFactory.getLogger(App.class);
public static void main(String[] args){
int i = 0;
Scanner scanner = new Scanner(System.in);
while(++i>0){
log.info(i+". Please input todo item name:");
TodoItem item = new TodoItem(scanner.nextLine());
System.out.println(item);
}
}
}
4 运行结果如下
17:18:10.285 [main] INFO com.immoc.gradle.todo.App - 1. Please input todo item name:
rt
TodoItem{name='rt', hasDone=false}
17:18:21.801 [main] INFO com.immoc.gradle.todo.App - 2. Please input todo item name:
八 依赖的两种写法
dependencies {
// 以单引号开始和结束,中间用:号隔开
compile group: 'ch.qos.logback:logback-classic:'1.2.3'
// 以,号分开三部分,每部分之间用:分割
testCompile group: 'junit', name: 'junit', version: '4.12'
}
九 仓库的查找顺序
repositories {
// 配置多个仓库,按顺序查找,找到为止,先找本地仓库,再找中央仓库
// 本地仓库
mavenLocal()
// 中央仓库
mavenCentral()
}
十 Gradle修改本地仓库的位置