我已经在网络上搜索了“ gradle classpath site:stackoverflow.com”和“ gradle classpath”,并仅在以下位置找到了相关信息:Gradle: Classpath
和编译依赖项之间有什么区别?
于腾宝的回答是这样写的:
编译'org.hibernate:hibernate-core:5.0.5.Final'是模块依赖项声明。编译配置(现在已由实现配置弃用。)只是“仅实现”依赖项的关键字。它不是描述它是哪种依赖关系的关键字(按类型,我遵循教程中定义的三种类型,即模块,文件和项目。)
因此,据我了解,classpath
它也是关键字。我想在gradle文档中找到它的含义:https ://docs.gradle.org/current/userguide/declaring_dependencies.html
以及其中引用的其他一些信息:
https
: //docs.gradle.org/current/userguide/dependency_management_for_java_projects.html https://docs.gradle.org/current/userguide/java_library_plugin.html
https://docs.gradle.org /current/dsl/org.gradle.api.artifacts.Configuration.html
https://docs.gradle.org/current/userguide/variant_model.html
https://docs.gradle.org/current/userguide/java_plugin.html
另外:https : //docs.gradle.org/current/javadoc/org/gradle/api/initialization/dsl/ScriptHandler.html https://docs.gradle.org/current/javadoc/org/gradle/api/tasks /Classpath.html https://docs.gradle.org/current/userguide/organizing_gradle_projects.html
提到了“ compileClasspath”。如果classpath
关键字仅被弃用为compile
一个,为什么文档中没有它?
附言:我的意思是:
buildscript {
repositories {
jcenter()
maven {
url 'https://maven.google.com/'
name 'Google'
}
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.1'
}
}
在回答后添加:
所以据我所知
classpath
也是关键字
这是不正确的。classpath
,compile
,implementation
,api
,和许多都是配置。Gradle中的配置是树状的,通常每个配置都从某个父对象扩展:
来源:https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_configurations_graph
例如,当您在中执行以下操作时,使用implementation
configurationbuild.gradle
:
dependencies {
implementation("org.apache.commons:commons-lang3:3.9")
}
您实际上是在做:
project.getDependencies().add("implementation", "org.apache.commons:commons-lang3:3.9")
前者使用Gradle DSL,而后者直接使用Gradle API。
如果
classpath
关键字仅被弃用为compile
一个,为什么文档中没有它?
该compile
配置的注意不赞成在这里。该classpath
配置仍被使用,但通常仅与该buildscrpt { }
块一起使用。
因此,对于您的示例:
buildscript {
dependencies {
classpath("com.android.tools.build:gradle:3.4.1")
}
}
糖到:
project.getBuildscript().getDependencies().add("classpath", "com.android.tools.build:gradle:3.4.1")
谢谢!我正在尝试在gradle源中找到您的最后一行-请参阅问题的更新结尾(来自IDEA的图片)。在该行的图片上看到了吗?还是应该以其他方式搜索?
搜索
getBuildscript().getDependencies()
什么都不getDependencies()
返回,返回100多个条目,因此我希望从getBuildscript()
条目中查找有问题的代码。您不会在上面添加的代码片段中找到1:1。Gradle非常抽象。找到这些行的最佳选择是编写一个执行上述操作的插件,然后进行测试/调试以跟踪代码路径。
我还要感谢您在stackoverflow.com/questions/60070739/…的帮助下,从末尾添加2开始。这个问题是在我开始研究并写这个问题之前。附注:我在您发表评论之前在上面写了PS。我猜答案(至少是ADDED 2)会一样吗?