gradle 应用程序依赖项和模块依赖项/插件之间有什么区别?

bprjcwpo  于 2023-06-23  发布在  其他
关注(0)|答案(4)|浏览(167)

当使用一些第三方库时,我会在模块的build.gradle文件中添加一个依赖项。

compile 'com.android.support:appcompat-v7:24.1.1'

或者我添加一个插件

apply plugin: 'com.neenbedankt.android-apt'

有时候,库需要在我的应用的build.gradle文件中添加依赖项。

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

这些依赖项和插件之间有什么区别?
为什么不能将它们全部设置在一个build.gradle文件中?
所有的建议是赞赏,我有麻烦搜索信息在这方面

ylamdve6

ylamdve61#

三件事。Gradle plugins、module dependencies 和build dependencies被放置在build tool* 的classpath(Gradle守护进程本身)上。

  • plugin* 是Gradle如何知道要使用什么tasks。有many plugins。有关详细信息,请参见Gradle - Plugin Documentation
  • dependency* 是用代码编译的库。下面的代码行使您的模块依赖于Android AppCompat V7库。在大多数情况下,您可以搜索Maven来查找这些。
compile 'com.android.support:appcompat-v7:24.1.1'

Gradle需要 classpath 设置,而不是你的应用。例如,这允许将Gradle Build Tools for Android包含到类路径中,并允许Gradle构建应用程序。

classpath 'com.android.tools.build:gradle:2.1.2'

为什么它们不能都在一个build.gradle文件中?
他们可能是。它只是更加模块化而不是。

yrdbyhpb

yrdbyhpb2#

我从一个同事那里得到了这个答案,这帮助我理解了。Gradle插件就像你用来构建应用程序的工具。依赖项是应用中包含的库。gradle插件通常是任务-如ktlint等。”

zzzyeukh

zzzyeukh3#

我自己也不明白,所以这就是我发现的。我的答案是基于gradle构建工具。

插件:

添加额外的任务、存储库、新的DSL元素、类路径/构建/运行的配置或后续开发的依赖关系管理。插件是为更大范围的开发而开发的,如javakotlinspring-boot

依赖关系:

modules/libraries用于httpserializationdatabase等任务的依赖项远程存储在repositories上,或本地存储在runTimetestbuild上,由gradle以配置的方式解析。

来源:

Sping Boot gradle插件:https://github.com/spring-projects/spring-boot/tree/master/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin
关于插件/依赖项的Gradle文档:https://docs.gradle.org/current/userguide/plugins.htmlhttps://docs.gradle.org/current/userguide/core_dependency_management.html
远程存储库:https://mvnrepository.com/

zxlwwiss

zxlwwiss4#

简而言之:

插件用于为软件/工具添加一些附加功能(如Gradle)。Gradle将在构建应用程序时使用添加的插件。
Dependecies用于在源代码中添加一些额外的代码,所以依赖将以库的形式为源代码提供一些额外的代码(如Java中的类)。

相关问题