Uczę się, jak działa Gradle i nie mogę zrozumieć, w jaki sposób rozwiązuje zależności przechodnie projektu.Dlaczego Gradle nie uwzględnia zależności przechodnich w ścieżce klas kompilacji/środowiska wykonawczego?
Na razie mam dwa projekty:
- Projecta: który ma kilka zależności na zewnętrznych bibliotek
- projectB: który ma tylko jedną zależność od Projecta
Nieważne jak Próbuję, gdy buduję projectB, gradle nie zawiera żadnych zależności projectA (X i Y) w ścieżce klasy kompilacji lub środowiska wykonawczego projectB. Udało mi się tylko sprawić, żeby działało, włączając w to zależności projektu A w skrypcie budowania projektu B, co moim zdaniem nie ma żadnego sensu. Te zależności powinny być automatycznie dołączane do projektu B. Jestem prawie pewien, że czegoś mi brakuje, ale nie wiem, co.
Przeczytałem o "zależnościach lib", ale wydaje się, że dotyczy to tylko lokalnych projektów, takich jak opisane here, a nie na zewnętrznych zależnościach.
Oto build.gradle używam w projekcie korzenia (ten, który zawiera zarówno Projecta i 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
}
}
}
Ten Projecta dotyczy wyłącznie:
version = '1.0'
dependencies {
compile 'com.company:X:1.0'
compile 'com.company:B:1.0'
}
I to jest ten użyty przez projektB:
version = '1.0'
dependencies {
compile ('com.company:projectA:1.0') {
transitive = true
}
}
Z góry dziękujemy za pomoc i przepraszamy ja dla mojego złego angielskiego.
2 rzeczy: przechodnia jest włączona domyślnie i zależność od innego projektu w tym samym projekcie wielomodułowego należy określić tak: 'skompilować projekt („: Projecta”) ' – stigkj
Mam podobne pytanie, http://stackoverflow.com/questions/29661824/android-aar-dependencies#. Do tej pory nie mogłem go uruchomić. –