java – Gradle中的“提供”依赖项
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Gradle中的“提供”依赖项,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1960字,纯文字阅读大概需要3分钟。
内容图文
![java – Gradle中的“提供”依赖项](/upload/InfoBanner/zyjiaocheng/706/e8a3c5205dcb4ea3b7c4591b4fc93638.jpg)
我在我面前有build.gradle,并且有一些依赖项被声明为提供但在documentation中我没有看到这个依赖范围.
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
....
}
这是由插件提供的吗?如果是这样,我怎么知道它属于哪个插件?
Gradle中提供的和运行时依赖范围有什么区别?
解决方法:
What is
provided
scope?
假设需要一个jar来编译代码,但jar存在于生产环境库集合中.然后,您不需要将jar打包到项目档案中.为了支持这一要求,Maven有一个名为提供的范围.如果您声明了所提供的任何jar依赖项,那么这个jar将在编译期间出现在您的类路径中,但不会与您的项目存档一起打包.
提供的范围非常有用,特别是在Web应用程序中.例如,servlet-api.jar需要存在于您的类路径中以编译您的项目,但您不需要使用它来将warlet-api.jar文件与war打包在一起.通过提供的范围,可以实现此要求.
在提供的Gradle java插件中没有定义Scope.也不在战争或安卓插件.如果要在项目中使用提供的作用域,则必须在build.gradle文件中定义它.以下是在gradle中声明提供范围的代码段:
configurations {
provided
}
sourceSets {
main { compileClasspath += configurations.provided }
}
现在,你的第二个问题:
What is the difference between provided and runtime dependency scope in Gradle?
首先回答这个问题,我将定义编译依赖性.编译依赖项是依赖项,这些是编译代码所必需的.现在假设如果您的代码使用名为X的库,则必须将X声明为编译时依赖项.还想象一下,X在内部使用另一个库Y,并将Y声明为运行时依赖项.
在编译期间,Gradle会将X添加到类路径中,但不会添加Y.因为编译时不需要Y.但它会将X和Y与您的项目存档打包在一起,因为X和Y都是在生产环境中运行项目存档所必需的.通常,生产环境中所需的所有依赖项称为运行时依赖项.
在Gradle官方documentation中,它表示运行时依赖性是“生产类在运行时所需的依赖关系.默认情况下,还包括编译时依赖性.”.
现在,如果您已经阅读了这篇文章,那么您已经知道提供的是一个编译依赖项,我们不希望它出现在运行时依赖项中(基本上,我们不希望它与项目存档打包).
以下是提供的和运行时范围的说明.这里,compile指的是编译项目所需的依赖项,而非编译指的是项目编译不需要的依赖项.
内容总结
以上是互联网集市为您收集整理的java – Gradle中的“提供”依赖项全部内容,希望文章能够帮你解决java – Gradle中的“提供”依赖项所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。