Почему Gradle не включает транзитивные зависимости в compile / runtime classpath?
Я изучаю, как работает Gradle, и я не могу понять, как он разрешает транзитивные зависимости проекта.
на данный момент у меня есть два проекта:
- projectA: который имеет несколько зависимостей от внешних библиотек
- projectB: который имеет только одну зависимость от projectA
независимо от того, как я пытаюсь, когда я строю projectB, gradle не включает никаких зависимостей projectA (X и Y) в компиляцию или время выполнения projectB путь класса. Мне удалось заставить его работать, включив зависимости projectA в скрипт сборки projectB, что, на мой взгляд, не имеет никакого смысла. Эти зависимости должны быть автоматически присоединены к projectB. Я уверен, что что-то упускаю, но не могу понять, что именно.
Я читал о "зависимостях lib", но, похоже, это относится только к локальным проектам, как описано здесь, а не на внешние зависимости.
вот сборка.Gradle в я используйте в корневом проекте (тот, который содержит как projectA, так и projectB):
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.3'
}
}
subprojects {
apply plugin: 'java'
apply plugin: 'idea'
group = 'com.company'
repositories {
mavenCentral()
add(new org.apache.ivy.plugins.resolver.SshResolver()) {
name = 'customRepo'
addIvyPattern "ssh://.../repository/[organization]/[module]/[revision]/[module].xml"
addArtifactPattern "ssh://.../[organization]/[module]/[revision]/[module](-[classifier]).[ext]"
}
}
sourceSets {
main {
java {
srcDir 'src/'
}
}
}
idea.module { downloadSources = true }
// task that create sources jar
task sourceJar(type: Jar) {
from sourceSets.main.java
classifier 'sources'
}
// Publishing configuration
uploadArchives {
repositories {
add project.repositories.customRepo
}
}
artifacts {
archives(sourceJar) {
name "$name-sources"
type 'source'
builtBy sourceJar
}
}
}
Это касается только проекта:
version = '1.0'
dependencies {
compile 'com.company:X:1.0'
compile 'com.company:B:1.0'
}
и это тот, который используется projectB:
version = '1.0'
dependencies {
compile ('com.company:projectA:1.0') {
transitive = true
}
}
заранее спасибо за любую помощь, и, пожалуйста, извинитесь за мой плохой английский.
2 ответов
наконец, проблема не в сценариях. Я только что очистил кэш gradle и папку сборки каждого проекта,чтобы сделать эту работу.