为什么一个项目依赖项被另一个已存在的项目依赖项替换

时间:2018-05-20 06:20:47

标签: gradle

我的构建失败,因为某些依赖项未得到满足。当我运行gradle依赖项任务时,我得到一些令人惊讶的东西。完全不同的项目项目:state:api和项目:bus:api不是区别对待,而是相同。这似乎是我将总线api的类放到我的类路径上的原因。但为什么?我正在使用gradle 4.7,我也在各个地方尝试过settings.gradle和rootProject.name,没有任何区别。

./gradlew server:dependencies --configuration compile | grep project
+--- project :bus:api
+--- project :bus:simple-list-bus
|    +--- project :bus:api
+--- project :state:api -> project :bus:api
+--- project :state:simple-state
|    +--- project :state:api -> project :bus:api
+--- project :utils:common

总线/的build.gradle

subprojects {
    apply plugin: 'java'
    apply plugin: 'maven'

    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    repositories {
        mavenCentral()
    }
}

总线/ API /的build.gradle

group 'kic'
version '1.0-SNAPSHOT'
archivesBaseName = 'kic-bus-api'

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

状态/的build.gradle

subprojects {
    apply plugin: 'java'
    apply plugin: 'maven'

    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    repositories {
        mavenCentral()
    }
}

状态/ API /的build.gradle

group 'kic'
version '1.0-SNAPSHOT'
archivesBaseName = 'kic-state-api'

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

1 个答案:

答案 0 :(得分:0)

我看起来不再尊重settings.gradle中的rootProject.name了。看起来现在只有一个(顶部根)settings.gradle受尊重/允许。这意味着必须在最顶级的设置中指定子模块名称。如下所示:./ / p>

include ':bus'
include ':bus:api'
include ':bus:simple-list-bus'
include ':state'
include ':state:api'
include ':state:simple-state'

project(":state:api").name = "kic-state-api"
project(":state:simple-state").name = "kic-state-simple"
project(":bus:api").name = "kic-bus-api"
project(":bus:simple-list-bus").name = "kic-bus-simple"