Gradle将一个项目从另一个项目中排除

时间:2015-11-14 15:19:40

标签: gradle

我面临依赖排除Gradle 2.5上的麻烦 所以,我有3个项目

第一个是moduleB(build.gradle):

group 'com.test'
version '1.0-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'idea'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    mavenLocal()
}


dependencies {
    compile project(':moduleA')
    compile 'org.jsoup:jsoup:1.8.3'
}
jar {
    manifest {
        attributes 'Main-Class': 'com.test.Main'
    }
    doFirst {
        from { configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) } }
    }
}

moduleA项目:

group 'com.test'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    compile project(':moduleC')
}

和moduleC项目

group 'com.test'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}
configurations.all {
    transitive = false
}
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    compile project(':moduleB')
}

moduleC需要使用来自moduleB的一些类,但是moduleC不应该通过moduleB(传递依赖)包含moduleA,我尝试使用transitive = false但它对我不起作用。 如果我想从moduleC使用moduleB,如何排除moduleA?

我的格斗错误:

Circular dependency between the following tasks:
:moduleA:classes
\--- :moduleA:compileJava
     +--- :moduleA:jar
     |    \--- :moduleA:classes (*)
     +--- :moduleB:jar
     |    \--- :moduleB:classes
     |         \--- :moduleB:compileJava
     |              +--- :moduleA:jar (*)
     |              +--- :moduleB:jar (*)
     |              \--- :moduleC:jar
     |                   \--- :moduleC:classes
     |                        \--- :moduleC:compileJava
     |                             +--- :moduleA:jar (*)
     |                             +--- :moduleB:jar (*)
     |                             \--- :moduleC:jar (*)
     \--- :moduleC:jar (*)

(*) - details omitted (listed previously)

为什么这对我不起作用?这是Gradle或其他什么的错误?

compile(project(':moduleB')) {
        transitive = false
    }

0 个答案:

没有答案