Java的Gradle依赖关系,使用编译还是实现?

当我向一位同事解释如何将Gradle用于Java项目时(他正在远离Maven ),我们遇到了各种代码示例。 有些示例将编译配置用于依赖项,而其他示例则使用Implementsapi

dependencies {
compile 'commons-httpclient:commons-httpclient:3.1'
compile 'org.apache.commons:commons-lang3:3.5'
}
dependencies {
api 'commons-httpclient:commons-httpclient:3.1'
implementation 'org.apache.commons:commons-lang3:3.5'
}

这篇文章是基于文档和StackOverflow问题的摘要,向他解释了要使用的配置。

新的依赖项配置

Gradle 3.4引入了Java库插件 ,其中包括当时新的配置实现api (以及其他)。 这些是为了替换此插件不建议使用的编译配置。 想法是,新配置将有助于防止多模块项目的传递依赖项泄漏。

请注意,在本文中,我仅以compile vs Implementation / api配置为例。 还引入了其他新的替代配置,请阅读文档以获取更多信息。

Java

对于使用Gradle 3.4+的Java项目,则取决于您是构建应用程序还是库。

对于库项目或多模块项目中的库模块,建议使用Java库插件,因此在build.gradle中使用它

apply plugin: 'java-library'

代替

apply plugin: 'java'

然后,您将使用实现还是api ,这取决于您是否要将依赖项公开给库的使用者。

对于普通的应用程序项目,您可以坚持使用Java插件并继续使用编译配置。 话虽如此,我已经尝试将Java库插件用于一个应用程序项目,并且看起来工作正常。

安卓系统

对于Android项目,新配置带有Android Gradle Plugin 3.0 。 因此,除非您仍在使用2.x版本的Android Studio / Android Gradle插件,否则不建议使用compile 。 因此,即使是应用程序,也应该使用实现

实际上,当我最近升级Android Studio时,它想到了以下信息:

配置“编译”已过时,并已由“实现”代替。
它将在2018年底删除

如果您使用Kotlin而不是Java,我认为这也适用。

Groovy

使用Groovy和Java的项目怎么样? 这可以用于Groovy / Java混合项目,也可以用于需要Groovy支持某些支持工具(例如SpockLogback配置 )的Java项目。

过去,我已经将Groovy插件而不是Java插件用于混合项目。 Groovy插件扩展了Java插件,并将处理Java源代码和Groovy源代码的编译。

apply plugin: 'groovy'

您可以继续对Java应用程序模块执行此操作,但是文档指出Groovy插件与Java库插件存在兼容性问题,因此需要解决库模块。

当然,这篇简短的文章是针对新手的,只是在学习所有新的依赖项配置方面只是一个草稿。

翻译自: https://www.javacodegeeks.com/2018/03/gradle-dependencies-java-use-compile-implementation.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值