类路径和编译依赖项之间有什么区别?

当向我的项目添加依赖项时,我从来不知道应该给它们添加什么前缀,例如 "classpath""compile".

例如,下面的依赖项是编译时还是类路径?

还有,这应该在我的 申请 build.gradle 中还是在 模组特定的 build.gradle 中?

当前 build.gradle (在应用程序级别) :

apply plugin: 'java'


repositories {
mavenCentral()
}


dependencies {
compile 'org.hibernate:hibernate-core:5.0.5.Final'
compile 'mysql:mysql-connector-java:5.1.38'
}
98391 次浏览

我猜你在 dependencies {}块中引用了 compileclasspath。如果是这样,那么这些就是依赖关系 配置

配置只是一组已命名的依赖项。

compile配置是由 Java 插件创建的。classpath配置通常出现在 buildScript {}块中,其中需要声明依赖关系 为了建筑,梯度,本身(可能是对插件)。

如果 构建脚本本身需要运行某些内容,则使用 类路径

If your project needs something to run, use 编译.

buildscript{}块用于 build.gradle 本身。

For multi-project building, the top-level build file is for the root project, the specific build file is for sub-project (module).

Top-level build file where you can add configuration options common to all sub-projects/modules.

不要将应用程序依赖项放在顶级构建文件中,它们属于单独的模块 build.gradle 文件

If I understand correctly, you're confusing Project.dependencies script block with the Project.buildscript.dependencies script block (just like I did when I reached this question).

我会试着用我的发现来回答这个问题。

我认为您应该已经熟悉了 Project.dependencies脚本块。在此块中,我们声明源代码所需的依赖项。声明项目所需的依赖项有几种方法。见 分级教程: 依赖类型。我只会提到与这个问题最相关的部分:

compile 'org.hibernate:hibernate-core:5.0.5.Final'是一个模块依赖性声明。编译配置(现在已经被实现配置弃用)它只是 Implementation only dependencies.的一个关键字,而不是一个描述它是哪种类型的依赖关键字(通过类型,我在这里遵循教程中定义的三种类型,即模块、文件和项目)

In 组织构建逻辑 it says:

如果构建脚本需要使用外部库,可以添加它们 在构建脚本本身的脚本的类路径 使用 buildscript ()方法,传入一个闭包,该闭包声明 the build script classpath.

这与您声明 Java 编译的方式相同,例如 中描述的任何依赖类型 依赖项类型,除了项目依赖项。

声明了构建脚本类路径之后,可以在 您的构建脚本,就像您对类路径上的任何其他类一样。

I hope things are getting clear to you now.

使用 classpath "com.android.tools.build:gradle:${Versions.android_gradle_plugin}",我们使用 com.android.tools.build:gradle:${Versions.android_gradle_plugin}设置 classpath方法,com.android.tools.build:gradle:${Versions.android_gradle_plugin}是一个模块依赖项,它由构建脚本本身使用,而不是由项目中的源代码使用。

另一方面,使用 compile 'org.hibernate:hibernate-core:5.0.5.Final',我们声明了编译 configuration的项目所需的模块依赖项。

Dr: classpathcompileimplementation都是可以在不同情况下针对依赖项使用的关键字。前者用于在需要向构建脚本传递依赖项时使用,后者是您可能需要声明的 configuration之一。

安卓:

Gradle ーー类路径之后的实现仅由 gradle 自己使用,在构建脚本中使用。因此,如果我在 build.gradle 类路径“修改...”中添加实现(比如修改) ,我的代码中就不能修改! !因为ーー我的代码看不到它,只有构建脚本可以看到它。

在 app build.gradle 中添加实现ーー添加代码可以使用的实现! !