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

包含本地jar作为api依赖项的Gradle库没有出现在消费者的类路径中

濮景龙
2023-03-14

在我的gradle java库项目中,我依赖于一个本地jar文件(工件不在任何地方发布)。依赖项配置如下所示:

dependencies {
    api fileTree(dir: '3rdparty', include: '*.jar')
}

当我将我的库发布到maven local中,然后从另一个项目中将其拉入时,3RDParty文件夹中jar中的符号在类路径上不可用,尽管它被列为api依赖项。这仅仅是在库模块中直接使用jar文件的限制吗?

共有1个答案

罗金林
2023-03-14

这是对文件依赖关系的一个众所周知的限制。Gradle文档对此很清楚

文件依赖项不包括在为项目发布的依赖项描述符中。但是,文件依赖项包含在同一生成中的可传递项目依赖项中。这意味着它们不能在当前生成之外使用,但可以在同一生成内使用。

原因很简单,与托管在二进制存储库中的工件相比,其他项目无法从外部解析这些依赖关系。在声明依赖项用户指南中阅读有关此主题的更多信息。

 类似资料:
  • 我在build.gradle文件中添加了下面的依赖项。Eclipse插件是在build.gradle中添加的。 一旦我运行gradle eclipse命令,所有的compile依赖项都会添加到类路径中,但是testcompile依赖项不会添加到类路径中。

  • 我罐子里的东西: 下面是我使用JAR的方法:

  • 可以在pom中包含本地文件。xml,或者在本地存储库中安装jar文件,或者提供指向本地jar的链接,并将范围设置为“system”。如果我包括一个胖jar(=包含所有可传递依赖项的jar),会发生什么?Maven是否仍然能够正确地检测依赖冲突,我是否仍然能够排除我的“胖jar依赖”的一些可传递依赖? 问题是,我正在从事一个遗留软件项目,该项目之前没有使用任何构建工具/依赖关系管理工具(因此所有需要

  • 我正在使用gradle构建一个groovy/java应用程序。在我向google guice 3.0添加依赖项之前,这一直很好。Gradle不会将guice jar添加到编译类路径中,至少看起来是这样。我遇到了这样的错误: 在我的身材中。gradle file I具有以下依赖项: 我正在使用Springsource工具套件2.9.2及其gradle插件开发应用程序,它使用gradles依赖关系管理

  • 我有一个jar,build-plugins.jar和一个gradle插件,它是用build.gradle中的这个插件构建的: 这将构建build-plugins.jar。并且使用插件的项目按文件引用插件jar 问题是当我运行第二个项目的任何任务时,我得到的是“class proxy created for class XYZ”,根本原因是四个依赖项(joda-time、commons-io、str

  • 在命令行中,我需要构建一个没有依赖项的可执行jar。当前的“gradle build”命令给了我一个带有依赖项的jar。 在StackOverflow上找不到这个。如果是重复的问题,指给我看。谢谢。