gradle 编译java
当我向一位同事解释如何将Gradle用于Java项目时(他正在远离Maven ),我们遇到了各种代码示例。 一些示例将编译配置用于依赖项,而其他示例则使用Implements和api 。
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
gradle 编译java