私はGradleのしくみを学んでいます。プロジェクトの過渡的な依存関係をどのように解決するのか理解できません。なぜGradleにコンパイル/ランタイムクラスパスの推移的な依存関係が含まれていないのですか?
- PROJECTA:どんなにPROJECTA
に一つだけの依存関係を持っていない:外部ライブラリ
今のところ、私は2つのプロジェクトを持っています私はprojectBをビルドするとき、gradleはprojectBのコンパイル時または実行時のクラスパスにprojectAの依存関係(XとY)を含んでいません。私はprojectAの依存関係をprojectBのビルドスクリプトに含めることで動作させることしかできませんでしたが、私の意見では意味がありません。これらの依存関係は、自動的にprojectBにアタッチする必要があります。私は何かが不足していると確信していますが、私は何が分かりません。
私は "lib依存関係"について読んだことがありますが、これはhereのようなローカルプロジェクトにのみ適用され、外部依存関係には適用されないようです。ここで
は私がルートプロジェクト(PROJECTAとProjectBの両方が含まれている1)で使用build.gradleです:
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
}
}
}
この1だけPROJECTAに関する:
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のものは: 'プロジェクトをコンパイル:推移は次のように指定する必要があり、同じマルチモジュールプロジェクト内の別のプロジェクトでデフォルトと依存でオンになっている(「:PROJECTA」) ' – stigkj
私にも同様の質問があります。http://stackoverflow.com/questions/29661824/android-aar-dependencies#これまでのところ、私はそれを働かせることができませんでした。 –