gradle依赖中的compile,testCompile和provided有啥区别

Posted

技术标签:

【中文标题】gradle依赖中的compile,testCompile和provided有啥区别【英文标题】:what is the difference between compile, testCompile and provided in gradle dependencygradle依赖中的compile,testCompile和provided有什么区别 【发布时间】:2016-10-15 20:46:20 【问题描述】:

我正在使用 android studio 并且在项目结构中 -> 依赖项选项卡中我可以看到以下选项:

    编译 提供 APK 测试编译 调试编译 发布编译

我的问题:gradle依赖中compile、testCompile和provided有什么区别

【问题讨论】:

Compile, Provided, APK - Android dependency scope的可能重复 【参考方案1】:

compile 是您构建应用程序所需的一组依赖项,而testCompile 是一组仅用于测试的依赖项。

例如查看build.gradle(取自here)

apply plugin: 'java'

repositories 
    mavenCentral()


dependencies 
    compile group: 'org.hibernate', name: 'hibernate-core', version: '3.6.7.Final'
    testCompile group: 'junit', name: 'junit', version: '4.+'

这指定需要hibernate-core 来构建您的代码,但junit(一个测试框架)仅用于测试。由于在运行时不需要它,所以它不会包含在发布的包中。

【讨论】:

抱歉吹毛求疵,但最后一行不应该是:因为它在运行时不需要,所以它不会包含在发布的包中。【参考方案2】:

您应该阅读发行版随附的用户指南,或通过http://gradle.org/documentation/ 在线阅读。

简而言之,“compile”用于“main”代码的依赖项,“testCompile”用于测试类,“provided”用于在编译时使用但不存储在 WAR 文件中的依赖项(因为它们应该在您的 Web 容器中可用)。

以下帖子可能有相关信息:Compile, Provided, APK - Android dependency scope。

【讨论】:

问题被标记为 Android。 WAR 文件不适用

以上是关于gradle依赖中的compile,testCompile和provided有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 依赖&解决依赖冲突

“compile”语句在build.Gradle中的位置在哪里?

Java使用 Gradle 依赖配置compile,implementation和api的区别

Gradle:使用依赖关系jar中的资源作为源集

带有 Gradle 的 Spring Boot 任务失败:测试?

在Gradle中过期依赖项时发出警告