зависимости gradle: что именно означает ключевое слово «classpath» и где оно задокументировано? - PullRequest
0 голосов
/ 05 февраля 2020

Я выполнил веб-поиск по "gradle classpath site: stackoverflow.com" и "gradle classpath" и нашел только необходимую информацию только:
Gradle: В чем разница между classpath и compile зависимости?

В ответе Тенг-Пао Ю написано:

compile '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 единица, почему оно отсутствует в документах?

PS Я имею в виду как:

buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.1'
   }
}

ДОБАВЛЕНО после ответа:

поиск getBuildscript () в исходном коде Gradle: search for getBuildscript() in gradle source code

1 Ответ

2 голосов
/ 05 февраля 2020

Итак, как я понял, classpath также является ключевым словом

Это неверно. classpath, compile, implementation, api и многие другие являются конфигурациями . Конфигурации в Gradle имеют древовидное значение, как правило, каждая из которых простирается от некоторого родителя:

configuration tree

Источник: https://docs.gradle.org/current/userguide/java_library_plugin.html#sec: java_library_configurations_graph

Например, используя implementation конфигурацию , когда вы делаете следующее в build.gradle:

dependencies {
    implementation("org.apache.commons:commons-lang3:3.9")
}

Вы на самом деле делаете:

project.getDependencies().add("implementation", "org.apache.commons:commons-lang3:3.9")

В первом используется Gradle DSL , в то время как в последнем напрямую используется API Gradle.

Если ключевое слово classpath просто устарело как compile one, почему он отсутствует в документах?

compile конфигурация устарела, как отмечено здесь . Конфигурация classpath все еще используется, но обычно используется только с блоком buildscrpt { }.

Для вашего примера:

buildscript {
    dependencies {
        classpath("com.android.tools.build:gradle:3.4.1")
    }
}

Desugars для:

project.getBuildscript().getDependencies().add("classpath", "com.android.tools.build:gradle:3.4.1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...