当前位置: 首页 > 知识库问答 >
问题:

未导入分级传递依赖项

夹谷野
2023-03-14

它一定是很明显的东西,但出于某种原因,我在仔细观察了几个小时后错过了它…

我正在用Gradle 5.1.1构建一个遵循六边形体系结构的多模块Spring Boot项目,因此我有几个适配器,比如rest-adapter,其Gradle.build文件如下:

import org.springframework.boot.gradle.plugin.SpringBootPlugin

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

dependencyManagement {
    imports {
        mavenBom SpringBootPlugin.BOM_COORDINATES
    }
}

dependencies {
    implementation project(':domain-api')

    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
} 

我可以建造它,没有问题。

import org.springframework.boot.gradle.plugin.SpringBootPlugin

apply plugin: 'java'
apply plugin: 'io.spring.dependency-management'

dependencyManagement {
    imports {
        mavenBom SpringBootPlugin.BOM_COORDINATES
    }
}

dependencies {

    implementation project(':domain')
    implementation project(':domain-api')
    implementation project(':rest-adapter')
}

C:\users\vf\ideaprojects\hexagonal-spring-boot-java\accept-test\src\main\java\packagename\myclass.java:3:error:package org.springframework.http不存在import org.springframework.http.httpstatus;^

我怀疑这是因为我使用了Spring Boot starter作为依赖项,所以我在rest-adapter中尝试了这一点:

dependencies {
    implementation project(':domain-api')

    implementation group: 'org.springframework', name: 'spring-web'
    compile "javax.servlet:javax.servlet-api:4.0.1"
    //implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'    
}

但我得到的是同样的结果。

共有1个答案

卫俊誉
2023-03-14

我是Gradle的新手。所以也许有更好的方法来做到这一点,但我会试着回答

我认为问题在于子项目的传递依赖关系要被另一个子项目访问,我们需要使其成为API而不是实现

在rest-adapter中,使其内部依赖项在验收测试中可用,如本例所示

 类似资料:
  • 我有三个分级模块:ModA模块、ModB模块和ModC模块 ModA依赖于ModB和Spring Web MVC 3.2.6 ModC依赖于Spring Web MVC 4.1.5 我得到了相当多的错误,因为ModA拉进来,使用的是Spring4.1.5而不是3.2.6。由于版本差异和时间,我现在无法将ModA更新到Spring4.1.5。我想做的是将Spring4.1.5从ModA Gradle

  • 我试图排除gradle中的传递依赖项 我看到这个错误 null 在类型为org.gradle.api.internal.artifacts.dependencies.DefaultExternalModuleDependency的DefaultExternalModuleDependency{group='org.apache.kafka',name='kafka-streams',version

  • null null 尝试强制升级的错误日志:“无法解析配置”:reading-condermination-server-quarkus-impl:TestCompileClasspath“的所有文件。 无法解析JUnit:JUnit:4.13。要求方:project:reading-concermination-server-quarkus-impl>找不到满足版本约束的“junit:junit

  • “DepProject”是一个Maven项目,在该项目的pom文件中,它依赖于另一个工件: 现在,当我对我的项目执行“gradle dependencies”时,它正确地表明我应该通过传递依赖项解析获得solrj依赖项,但它不尊重4.4.0版本声明,相反,我的项目获得了5.5.4版本的依赖项。 这些行在依赖关系报告中出现几次,始终相同。 然后在结果的“gradle dependencies”调用中

  • 在应用中,您希望使用不同的类来处理不同的任务以保持代码的简洁。我们把这些类称为 依赖。如何将这些依赖关系传递给将在后台任务调用的方法呢? 当您在后台任务中调用静态方法时,仅限于应用程序的静态上下文,这需要您使用以下获取依赖关系的模式: 通过 new 手动实例化依赖 服务定位器模式 抽象工厂模式 或 建设者模式 单例模式 然而,所有这些模式使您的应用程序的单元可测试性方面变得非常复杂。为了解决这个问