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

Maven:Fat jar作为本地依赖项

农明辉
2023-03-14

可以在pom中包含本地文件。xml,或者在本地存储库中安装jar文件,或者提供指向本地jar的链接,并将范围设置为“system”。如果我包括一个胖jar(=包含所有可传递依赖项的jar),会发生什么?Maven是否仍然能够正确地检测依赖冲突,我是否仍然能够排除我的“胖jar依赖”的一些可传递依赖?

问题是,我正在从事一个遗留软件项目,该项目之前没有使用任何构建工具/依赖关系管理工具(因此所有需要的JAR都只是下载并添加到类路径中)。我正在尝试将其转换为Maven项目。这对于所有开源依赖项来说都不是很困难(因为几乎所有依赖项都可以在Maven Central或其他存储库中找到)。在某些情况下,我们拥有很久以前获得的专有库,可以作为fat-jar使用。

maven shade插件在这种情况下会有帮助吗?

共有1个答案

林俊英
2023-03-14

作为依赖项的胖JAR是危险的,因为如果胖JAR包含x.jarx.jar的内容也出现在类路径上,那么您通常会遇到冲突。Maven不会解决冲突,因为Maven不知道胖JAR中包含哪些JAR。

因此,当您有一个fat-JAR依赖项时,您需要确保fat-JAR中的所有内容都不是项目中其他地方的依赖项,如果是,您应该将其排除在外。

如果对内容进行着色处理,则可能不会发生此类冲突。

 类似资料:
  • 配置 jar 包需要在 compile 中添加响应依赖。下面的代码添加了 libs 文件夹中的所有 jar 作为依赖。 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } android { ... } 注意:dependencies DSL 标签是标准 Gradle API 中的一部分,所以它不属于

  • 问题内容: 我想使用Leiningen来构建和开发Clojure项目。有没有办法修改project.clj告诉它从本地目录中选择一些jar? 我有一些专有的jar,无法上传到公共存储库。 另外,可以使用leiningen维护clojure项目的“ lib”目录吗?如果我的一堆clojure项目共享相同的jar,我不想为每个jar保留一个单独的副本。 谢谢 问题答案: 你可以将你的私人jar放进去,

  • 我尝试使用pandas(使用conda安装二进制文件和依赖项,然后使用pip,然后使用no-binaries选项构建);仍然有错误。 Numpy可用(1.11.2)。我知道numpy不再提供某些接口。我使用的Python版本是2.7.11。安装的软件包清单如下。 错误消息: C:......在Windows 64位上使用MINGW-W64构建的Numpy是实验性的,仅可用于测试。建议您不要将其用于

  • 是否可以从pom.xml引用本地Gradle项目作为Maven项目的本地依赖项? 搜索很容易给我一个相反的结果--“如何从gradle Builds引用maven项目”,但不是我的情况。

  • 我们有一个maven项目,其中我们使用了一些在任何远程存储库中都不存在的工件。它们作为编译的.jar文件包含在我们的项目中的某个目录中,比如/lib。其中一些是“普通”依赖项,我们可以使用范围system+systemPath从/lib中利用这些依赖项,但是有一个工件应该与maven-dependency-plugin unpack目标一起使用。xml的相关部分如下所示 但是,这仍然试图联系到远程

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