首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >级中的“提供”依赖

级中的“提供”依赖
EN

Stack Overflow用户
提问于 2015-06-09 11:45:39
回答 4查看 46.2K关注 0票数 39

我前面有build.gradle,有些依赖项声明为provided,但是在文档中,我没有看到这个依赖范围。

代码语言:javascript
复制
dependencies {
    compile("org.springframework.boot:spring-boot-starter-web:1.2.4.RELEASE")
    ....

    provided 'backport-util-concurrent:backport-util-concurrent:3.1'
    provided 'org.javolution:javolution:5.5.1@jar
    ....
}

这是由插件提供的吗?如果是这样的话,我如何找出这个插件属于哪个插件?

providedruntime依赖范围在Gradle中有什么区别?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-06-09 12:04:56

什么是provided范围?

假设编译代码需要一个jar,但是jar存在于生产环境库集合中。然后,您不需要将jar打包到您的项目档案中。为了支持这个需求,Maven有一个名为provided的范围。如果您将任何jar依赖声明为provided,则在编译期间这个jar将出现在您的类路径中,但不会与您的项目存档一起打包。

provided范围非常有用,特别是在web应用程序中。例如,需要在类路径中显示servlet-api.jar来编译项目,但是您不需要这样做就可以将servlet-api.jar文件打包到war中。有了provided作用域,就可以实现这一要求。

在名为provided的Gradle java插件中没有定义范围。也不是在warandroid插件中。如果要在项目中使用provided作用域,则必须在build.gradle文件中定义它。下面是在gradle中声明provided作用域的代码片段:

代码语言:javascript
复制
configurations {
    provided
}

sourceSets {
    main { compileClasspath += configurations.provided }
}

现在,你的第二个问题:

在Gradle中,提供的和运行时依赖范围之间有什么区别?

为了首先回答这个问题,我将定义compile依赖项。compile依赖项是依赖项,这是编译代码所必需的。现在,假设您的代码使用一个名为X的库,那么您必须声明X为编译时依赖项。还假设X在内部使用另一个库Y,并将Y声明为运行时依赖项。

在编译期间,Gradle将将X添加到类路径中,但不会添加Y。因为,编译不需要Y。但是它将将XY打包到您的项目存档中,因为在生产环境中运行项目存档需要XY。通常,生产环境中所需的所有依赖项都称为runtime依赖项。

在Gradle官方文档中,它说runtime依赖项是“生产类在运行时所需的依赖项,默认情况下,还包括编译时依赖项.”。

现在,如果您已经阅读了这么多,那么您已经知道provided是一个我们不希望出现在runtime依赖项中的compile依赖项(基本上,我们不希望它与项目存档一起打包)。

下面是providedruntime作用域的说明。在这里,compile引用编译项目所需的依赖项,non-compile引用项目编译所不需要的依赖项。

票数 67
EN

Stack Overflow用户

发布于 2019-02-22 09:40:27

从gradle 2.12开始,您可以使用compileOnly选项。

看见

https://blog.gradle.org/introducing-compile-only-dependencies

票数 16
EN

Stack Overflow用户

发布于 2019-07-06 04:52:55

为了进一步澄清,在最新版本中,Gradle 5.5有compileOnly (与provided相同)和runtimeOnly选项。新的默认“编译和运行时”选项是implementation

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30731084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档