【问题标题】:Gradle not provide dependency in subprojectsGradle 不在子项目中提供依赖
【发布时间】:2020-08-26 02:44:07
【问题描述】:

我在一个gradle项目中遇到了依赖问题,不知道怎么解决。

我有一个根项目“project-root”和两个子项目“project-sub-a”和“project-sub-b”。 “project-sub-a”依赖于“project-sub-b”。

结构是:

project-root
|-settings.gradle
|-build.gradle
project-sub-a
|-build.gradle
project-sub-b

project-root:settings.gradle:

include 'project-sub-a', 'project-sub-b'

project-root:build.gradle:

plugins {
    id "io.spring.dependency-management" version "1.0.8.RELEASE"
}

subprojects {
    apply plugin: 'java'
    apply plugin: 'io.spring.dependency-management'
    apply plugin: 'java-library'

    repositories {
        mavenCentral()
    }

    dependencies {
        // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-gradle-plugin
        compile group: 'org.springframework.boot', name: 'spring-boot-gradle-plugin', version: '2.1.7.RELEASE', ext: 'pom'
        implementation 'org.projectlombok:lombok'
        annotationProcessor 'org.projectlombok:lombok'
        implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.10.3'
    }

    dependencyManagement {
        imports {
            mavenBom("org.springframework.boot:spring-boot-dependencies:2.2.6.RELEASE")
        }
    }
}

project-sub-a:build.gradle:

plugins {
    id 'org.springframework.boot' version '2.2.6.RELEASE'
}

apply plugin: 'org.springframework.boot'

dependencies {
    implementation project(':connection-service-common')
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

./gradlew build 之后出现以下错误:

> Task :project-sub-b:compileJava
.../Pojo.java: error: package com.fasterxml.jackson.annotation does not exist
import com.fasterxml.jackson.annotation.JsonProperty;

and more ...

有人知道如何解决这个问题吗?谢谢。

【问题讨论】:

    标签: java gradle dependencies multi-module


    【解决方案1】:

    你的好像不见了:

     'com.fasterxml.jackson.core:jackson-annotations:2.10.3'
    

    其中(和其他一些杰克逊罐子)是一个传递依赖

    'org.springframework.boot:spring-boot-starter-web'
    

    这就是项目 a 不抱怨的原因。因此,无需将杰克逊放在subprojects 中。无论如何,子项目 a 都会得到它。

    【讨论】:

    • 谢谢。现在它起作用了!我从 project-root:build.gradle 中删除了 '实施组:'com.fasterxml.jackson.core',名称:'jackson-core',版本:'2.10.3'',并移动了'实施'组织。 springframework.boot:spring-boot-starter-web'' 从 project-sub-a:build.gradle 到 project-root:build.gradle。但我仍然不明白为什么它以前不起作用。也许 'com.fasterxml.jackson.core:jackson-annotations:2.10.3' 是错误的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多