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

gradle 7缺少可传递依赖项

云霖
2023-03-14

我刚刚将我的项目升级到gradle 7,并且遇到了缺失的可传递依赖项。我试着改变我的身材。gradle文件在依赖项中使用“api”,但这并没有修复它。

projectA依赖于projectB,projectB依赖于projectC。

projectA-build。格拉德尔

dependencies {
*implementation group: 'group-projectB', name: 'name-projectB',                         version: '1.+'*
}

projectB-构建。格拉德尔

dependencies {
api group: 'group-projectC', name: 'name-projectC', version: '1.+'
}

ProjectA编译良好,但有运行时错误-从project ectC获取类的ClassNotFoundExcure

如果我改变项目A的build.gradle如下(包括项目C运行时错误消失)

dependencies {
*implementation group: 'group-projectB', name: 'name-projectB',                         version: '1.+'*
*implementation group: 'group-projectC', name: 'name-projectC',                         version: '1.+'*
}

我不明白为什么我需要在project ectA中包含project ectC依赖项,因为它在project ectB中定义得很清楚。这在gradle 6中从来都不是问题。

任何建议都将不胜感激。提前谢谢你。

#######################编辑以包含更多信息

项目B:

publications {
    mavenJava(MavenPublication) {
        group = 'group-projectB'
        artifactId = 'artifact-projectB'
        artifact (file("${buildDir}/libs/${project.name}-${project.version}.jar"))
    }
}

项目C:

publications {
    mavenJava(MavenPublication) {
        group = 'group-projectC'
        artifactId = 'artifact-projectC'
        artifact (file("${buildDir}/libs/${project.name}-${project.version}.jar"))
    }
}

共有1个答案

葛念
2023-03-14

在看了@Bjorn Vester的评论后,我回头看看在我改变之前我是如何发布project ectB和project ectC的。我把它们切换回它们是如何发布的,这解决了问题。谢谢你!!

publications {
    mavenJava(MavenPublication) {
    group = 'group-projectC'
    artifactId = 'artifact-projectC'
        from components.java
    }
}
 类似资料:
  • 问题内容: 知道为什么我会收到此错误: persistence.xml mydatasource-ds.xml module.xml 问题答案: 错误的原因是您缺少依赖java:jboss / datasources / UserDS。使用Jboss 7.x +,您可以将这些数据源直接添加到您发现的应用服务器配置中。 独立配置和域配置之间的区别在于,独立配置仅针对具有该配置的一台应用服务器而设计。

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

  • 问题内容: 我正在尝试使用Maven构建Javahibernate项目。但是,当我尝试执行此操作时,似乎没有依赖项吗? 我的项目中现在有了这个pom.xml: 当我尝试使用mvn进行构建时,出现此错误: 我搜索了此错误,发现很多人必须在其pom.xml文件中更改其hibernate核心依赖版本,但似乎我没有hibernate核心,那么如何解决此问题? 问题答案: 它具有建议的JTA 1.1依赖性。

  • 我在构建我的应用程序时遇到此问题。有人知道怎么回事吗? React Hook useEffect缺少依赖项:“conectar”。包括它或删除依赖项数组react hooks/dep

  • 在我的反应/redux应用程序中,我使用调度来调用每次安装组件时从redux中的状态检索数据的操作。问题正在使用状态发生我的方式不工作 下面是我得到的错误: React Hook useEffect缺少依赖项:“dispatch”。包括它或删除依赖项数组。像“getInvoiceData”这样的外部作用域值不是有效的依赖项,因为对它们进行变异不会重新呈现组件react HOOK/DEP 这是我的密

  • 主要内容:依赖传递,依赖范围,依赖范围对传递依赖的影响,依赖调节Maven 依赖传递是 Maven 的核心机制之一,它能够一定程度上简化 Maven 的依赖配置。本节我们将详细介绍依赖传递及其相关概念。 依赖传递 如下图所示,项目 A 依赖于项目 B,B 又依赖于项目 C,此时 B 是 A 的直接依赖,C 是 A 的间接依赖。 Maven 的依赖传递机制是指:不管 Maven 项目存在多少间接依赖,POM 中都只需要定义其直接依赖,不必定义任何间接依赖,Mav