app依赖项和模块依赖项/插件有什么区别?

时间:2016-08-12 04:47:15

标签: gradle build.gradle

使用某些第三方库时,我会在模块的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文件中?

所有建议都表示赞赏,我在搜索此信息时遇到问题

3 个答案:

答案 0 :(得分:9)

三件事。 Gradle 插件,模块依赖,构建依赖项,放置在构建工具的类路径上。

插件是Gradle知道要使用的tasks的方式。有many plugins。有关详细信息,请参阅Gradle - Plugin Documentation

依赖a library that is compiled with your code。以下行使您的模块依赖于Android AppCompat V7库。在大多数情况下,您可以搜索MavenJcenter

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

classpath 设置为needed for Gradle,而不是您的应用。例如,这允许这包括Android的Gradle Build Tools到类路径中,并允许Gradle构建应用程序。

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

为什么它们都不在一个build.gradle文件中?

他们可能会。它更简单,更模块化。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

插件:

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

依赖关系:

用于 moduleshttpserialization 等任务的

database/libraries 是远程存储在 repositories 或本地存储的依赖项,这些依赖项在 {{1} }、runTimetest 由 gradle 以配置的方式解析。

来源:

Spring 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.html https://docs.gradle.org/current/userguide/core_dependency_management.html

远程仓库: https://mvnrepository.com/