在向我的项目添加依赖项时,我从来不确定应该给它们加什么前缀,例如"classpath"
或"compile".
例如,下面的依赖项应该是编译时还是类路径?
另外,这应该在我的 applications build.gradle中还是在 module 特定的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'
}
4条答案
按热度按时间mi7gmzs61#
如果 buildscript 本身需要运行某些内容,请使用类路径。
如果您的项目需要运行某些内容,请使用compile。
buildscript{}
块用于build.gradle本身。对于多项目生成,顶级生成文件用于根项目,特定生成文件用于子项目(模块)。
顶级构建文件,您可以在其中添加所有子项目/模块通用的配置选项。
不要将您的应用程序依赖项放在顶级构建文件中,它们属于单独的模块构建.gradle文件
zy1mlcev2#
我猜你在
dependencies {}
块中引用了compile
和classpath
,如果是这样的话,它们就是依赖项Configurations。配置只是一组命名的依赖项。
compile
配置由Java插件创建。classpath
配置通常出现在buildScript {}
块中,在该块中需要为build.gradle本身 * 声明依赖项 *(可能是插件)。tkclm6bt3#
如果我没理解错的话,您混淆了
Project.dependencies
脚本块和Project.buildscript.dependencies
脚本块(就像我在回答这个问题时所做的那样)。我将尝试用我的发现来回答这个问题。
我想你应该已经熟悉了
Project.dependencies
脚本块。在这个块中,我们声明了源代码所需的依赖项。有几种方法可以声明项目所需的依赖项。请参见Gradle Tutorial: Dependency Types。我只提到与这个问题最相关的部分:compile 'org.hibernate:hibernate-core:5.0.5.Final'
是一个模块依赖项声明。编译配置(现在被实现配置弃用。)只是Implementation only dependencies.
的一个关键字,而不是描述依赖项类型的关键字(这里的类型是指教程中定义的三种类型,即模块、文件和项目)。在Gradle教程中:组织构建逻辑它说:
如果您的构建脚本需要使用外部库,您可以将它们添加到构建脚本本身的类路径中。您可以使用buildscript()方法,传入一个声明构建脚本类路径的闭包来完成此操作。
例如,这与声明Java编译类路径的方式相同。可以使用依赖关系类型中描述的任何依赖关系类型,但项目依赖关系除外。
声明生成脚本类路径后,您可以像使用类路径中的任何其他类一样使用生成脚本中的类。
我希望你现在明白了。
对于
classpath "com.android.tools.build:gradle:${Versions.android_gradle_plugin}"
,我们使用com.android.tools.build:gradle:${Versions.android_gradle_plugin}
设置classpath
方法,这是一个模块依赖项,由构建脚本本身使用,而不是项目中的源代码。另一方面,对于
compile 'org.hibernate:hibernate-core:5.0.5.Final'
,我们使用编译配置声明了项目所需的模块依赖项。tl;dr:
classpath
、compile
和implementation
都是关键字,可以在不同的情况下针对依赖项使用。前者用于将依赖项传递给构建脚本,后者是您可能要声明的配置之一。km0tfn4u4#
安卓系统:
项目build.gradle中的类路径--类路径之后的实现仅由gradle自身使用,用于构建脚本中。因此,如果我在项目build.gradle类路径“retrofit...”中添加实现(如retrofit),我无法在我的代码中获得retrofit!!因为--我的代码看不到它,只有构建脚本可以看到它。
gradle中的实现--添加您的代码可以使用的实现!!