java - Gradle 不提供子项目中的依赖项

标签 java gradle dependencies multi-module

我在 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

项目根目录:settings.gradle:

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

项目根目录: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 ...

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

最佳答案

看起来你失踪了:

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

which(以及其他一些 jackson jars)是 的传递依赖

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

这就是项目 a 不提示的原因。因此,无需将 Jackson 放入子项目中。无论如何,子项目 a 都会得到它。

关于java - Gradle 不提供子项目中的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61714792/

相关文章:

java - Google Cloud Dataflow DatastoreIO 读写依赖问题

java - Hive Mapreduce 作业失败

gradle - 需要一个 gradle jar 任务来正常复制类和自定义文件

android - 迁移到Androidx问题。多个具有 “duplicate value for resource”问题的第三方库

android - 找不到 gradle DSL 方法 : 'compile()' persisting error

ant - Apache Ivy : resolving dependencies embedded in an installer

javascript - 构建具有动态加载功能扩展的 jquery 插件

java - 当我按下几个 Jbuttons 时无法播放多个声音

java - 从终端运行代码时会创建文本文件,但在 Java 中运行时不会

java - <?> 在 Android 方法签名中是什么意思?