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支持某些支持工具(例如Spock或Logback配置 )的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java面向对象(11)--多态性

父类 变量名 new 子类();对象的多态性:父类的引用指向子类的对象 Java引用变量有两个类型:编译时类型和运行时类型。编译时类型由声明 该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。简…

java如何替换字符串0A_我有一个带有“ \ u00a0”的字符串,我需要将其替换为“” str_replace failed...

我需要清理来自各种Microsoft Office套件应用程序(Excel,Access和Word)的字符串(复制/粘贴),每个应用程序都有自己的一组编码。我将json_encode用于调试目的,以便能够看到每个编码的字符。我可以使用str_replace清除到目前为止找到的所有内容…

Java面向对象(12)--对象类型转换 (Casting )

基本数据类型的Casting: ①自动类型转换:小的数据类型可以自动转换成大的数据类型 如long g20; double d12.0f ②强制类型转换:可以把大的数据类型强制转换(casting)成小的数据类型 如 float f(float)12.0; int a(int)1200L Java对象的强制…

知识蒸馏 循环蒸馏_Java垃圾收集蒸馏

知识蒸馏 循环蒸馏串行,并行,并发,CMS,G1,Young Gen,New Gen,Old Gen,Perm Gen,Eden,Tenured,Survivor Spaces,Safepoints和数百个JVM…

Java面向对象(13)--==操作符与equals方法

:运算符 可以使用在基本数据类型变量和引用数据类型变量中 ①如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等(类型不一定要相同,当要能够统一)。 int i 9;int j 9;double d 9.0;System.out.println(i j); //trueSystem.out.println…

ubuntu php pear_ubuntu下安装pear包(lynx和php-cli安装)

如果已经安装了lynx和php5-cli,那么就可以很方便的安装pear包了。如果安装了lynx和php5-cli,直接运行 # lynx -source http://pear.php.net/go-pear | php 就可以出现安装界面了。直接按提示回车就行了。遇到y/n选择直接y就可以了。不需要输入任何东西就可以全部安装…

Javascript中的AES加密和Java中的解密

AES代表高级加密系统,它是一种对称加密算法,很多时候我们需要在客户端加密一些纯文本(例如密码)并将其发送到服务器,然后由服务器解密以进行进一步处理.AES加密和解密更加容易在相同的平台(例如Android客户…

toString()方法使用

toString()方法在Object类中定义,其返回值是String类型,返回类名和它的引用地址。在进行String与其它类型数据的连接操作时,自动调用toString()方法。 Account account new Account(); System.out.println(account); //com.atyeman.Account…

php 睡眠,php输出与sleep()

您要实现的是从PHP向浏览器的增量输出.这是否可实现取决于您的服务器以及您如何调用PHP.FastCGI下的PHP当PHP在FastCGI下而不是作为Apache模块运行时,你可能更容易遇到这种问题,因为服务器和PHP进程之间的耦合并不紧密耦合.一旦数据离开PHP进程,FastCGI通信就使用输出缓冲,只有…

Java面向对象(14)--包装类的使用

针对八种基本数据类型定义相应的引用类型—包装类&#xff08;封装类&#xff09;&#xff0c;有了类的特点&#xff0c;就可以调用类中的方法。 基本数据类型 <——> 包装类&#xff0c;String——>包装类 ①装 int num 9; Integer int1 new Integer(num); Syste…

php读取mp3信息,PHP获取MP3的媒体标签信息

PHP如何获取MP3的媒体标签信息&#xff1f;本文主要介绍了PHP获取音频文件的相关信息的相关资料。希望对大家有所帮助。项目需求&#xff1a;现在有一个音频文件上传的功能&#xff0c;在上传后PHP需要获取这个音频文件的相关信息&#xff0c;例如&#xff1a;时长等&#xff0…

资源泄漏如何处理_处理缓慢的资源泄漏

资源泄漏如何处理使用Java监视器查找资源泄漏 查找缓慢的资源泄漏是使应用程序服务器长时间保持正常运行的关键。 在这里&#xff0c;我解释了如何使用Java监视器来发现缓慢的资源泄漏&#xff0c;以及如何验证它们是否是实际泄漏&#xff0c;而不仅仅是额外的预分配到某些HTTP…

Integer包装类特殊之处

Integer内部定义了IntegerCache结构&#xff0c;IntegerCache中定义了 Integer[]&#xff0c;保存了从-128~127范围的整数。如果我们使用自动装箱的方式&#xff0c;给Integer赋值的范围在 -128~127范围内时&#xff0c;可以直接使用数组中的元素&#xff0c;不再去new了。目的…

php中间件怎么使用,laravel框架中间件简单使用方法示例

本文实例讲述了laravel框架中间件简单使用方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;laravel内置了一个中间件来验证用户是否经过认证&#xff0c;如果用户没有经过认证&#xff0c;中间件会将用户重定向到登录页面&#xff0c;否则如果用户经过认证&#xf…

在Spring WebFlux中创建多个RouterFunction

在这篇文章中&#xff0c;我们将研究在Spring WebFlux中为不同的逻辑域定义多个路由器功能。 如果您正在创建“微服务”&#xff0c;则可能不会出现问题&#xff0c;因为您很可能仅在每个服务的单个域中工作&#xff0c;但是如果不是这样&#xff0c;则可能需要在应用程序中包含…

cstart做int型转换运算Java,java 实验报告1.docx

甘肃政法学院本科生实验报告(一)姓名:俞晓学院:信息工程学院专业:信息管理与信息系统班级:13级信管班实验课程名称:JAVA SE课程实验指导教师&#xff1a;李瑞生 教师实验成绩&#xff1a;实验日期: 2015 年 3 月 24 日开课时间&#xff1a; 2014-2015 学年 第二 学期甘肃政法学…

Java面向对象(15)--static关键字静态理解与使用

类属性作为该类各个对象之间共享的变量。在设计类时,分析哪些属性不因对象的不同而改变&#xff0c;将这些属性设置为类属性。如果方法与调用者无关&#xff0c;则这样的方法通常被声明为类方法&#xff0c;由于不需要创建对象就可以调用类方法&#xff0c;从而简化了方法的调用…

JSON补丁:JSON-P 1.1概述系列

Java EE 8包括对JSON处理API的更新&#xff0c;并使其与JSON的最新IEFT标准保持同步。 他们是&#xff1a; JSON指针 RFC 6901 JSON补丁 RFC 6902 JSON合并修补程序RFC 7396 我将在这个迷你系列中涵盖这些主题。 入门 要开始使用JSON-P&#xff0c;您将需要Maven中央存储库…

Java面向对象(16)--单例(Singleton)设计模式

所谓类的单例设计模式&#xff0c;就是采取一定的方法保证在整个的软件系统中&#xff0c;对某个类只能存在一个对象实例&#xff0c;并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个对象&#xff0c;我们首先必须将类的构造器的访问权限设…

mac php 超时,PHP---Mac上开启php错误提示

发现在使用mac 上 PHP开发项目的时候&#xff0c;程序代码错误的时候没有错误提示&#xff0c;只是提示白板。研究和查找资料才调整了一下; 步骤如下&#xff1a;1.找到php.ini文件如图所示&#xff1a;1)找到 display_errors Off &#xff0c;把Off 改为 On . 最后为 display…