为了账号安全,请及时绑定邮箱和手机立即绑定

请教一下gradle provided和compile的区别?

/ 猿问

请教一下gradle provided和compile的区别?

若吾皇 2019-09-05 11:07:21

gradle provided和compile的区别


查看完整描述

4 回答

?
烧仙草VB

gradle provided和compile的区别在于使用providedCompile的前提是apply plugin: 'war'

1、Gradle compile:

假如你的jar包存在代码依赖性,在编译、运行时候需要依赖代码,那就用compile

例如 :

compile 'org.springframework.boot:spring'

2、Gradle providedCompile:

假如你的jar包存在代码依赖性,但是在编译的时候才用得上,而运行时不需要,就用providedCompile

例如:

providedCompile 'org.springframework.boot:spring'


查看完整回答
反对 回复 2019-09-07
?
呼啦一阵风

Gradle compile:
如果你的jar包/依赖代码 在编译的时候需要依赖,在运行的时候也需要,那么就用compile
例如 :
compile ‘org.springframework.boot:spring-boot-starter-websocket:1.1.6.RELEASE‘

Gradle providedCompile:
如果你的jar包/依赖代码 仅在编译的时候需要,但是在运行时不需要依赖,就用providedCompile
例如:
providedCompile ‘org.springframework.boot:spring-boot-starter-tomcat:1.1.6.RELEASE‘



查看完整回答
反对 回复 2019-09-07
?
qq_遁去的一_1

假设项目引用了类库 A 和类库 B ,同时,这两个类库都依赖包 C 。
1. 如果 A 、B 、C 均为 Maven 依赖,可以直接使用,不会存在冲突问题。
如果还是有问题,则在主项目可以去除 A 、B 中的 C 。
主项目:
compile 'a.group:a.artifactId:a.version' {
exclude group: 'c.groupId', module: 'c.artifactId'
}
compile 'b.group:b.artifactId:b.version' {
exclude group: 'c.groupId', module: 'c.artifactId'
}
compile 'c.groupId:c.artifactId:c.version'
2. 如果 A 、B 均为 Maven 依赖,C 为 jar 依赖。则将 C 复制到主项目、A 、B 中,主项目 compile C ,A 、B provided C 。
主项目: compile files('libs/C.jar')

A 、B 项目:provided files('libs/xx.jar')
3. 如果 A 、B 均为 Library Project 依赖,C 为 jar 依赖。同 2 。
4. 如果 A 、B 均为 Library Project 依赖,C 为 Maven 依赖。同 2 或者 1(Maven 依赖也可以进行 provided 处理)。
5. 如果 A 为 Maven 依赖或者 Library Project 依赖,B 为 jar 依赖,C 为 jar 依赖。
A 项目:provided files('libs/xx.jar')

B 项目和主项目,不做其他任何处理。
6. 如果 A 、B 、C 均为 jar 依赖,尝试重新将 A 、B 打包,将 C 剥离出来。



查看完整回答
反对 回复 2019-09-07

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信