【问题标题】:In a Springboot Maven project, how to reference from another Jar?在 Spring Boot Maven 项目中,如何从另一个 Jar 中引用?
【发布时间】:2021-09-09 02:25:10
【问题描述】:

我有一个 SpringBoot Maven 项目。我依赖于另一组库。目前正在指向他们的存储库路径,将其下载到 .m2 存储库并使用。

但是存储库网站不可靠。 所以我想将依赖库作为 JAR 的一部分打包到资源文件夹中。 将罐子放入资源文件夹后。如何获取类型/库的引用?

目前:

<dependencies>
<dependency>
            <groupId>org.dcm4che</groupId>
            <artifactId>dcm4che-core</artifactId>
            <version>5.23.1</version>
</dependency>
    </dependencies>
<repositories>
        <repository>
            <id>www.dcm4che.org</id>
            <name>dcm4che Repository</name>
            <url>https://www.dcm4che.org/maven2</url>
        </repository>
</repositories>

【问题讨论】:

  • 你从哪里收到的?
  • 图书馆托管在:dcm4che.org/maven2,但该网站目前已关闭。我需要通过简单地将依赖项打包到资源文件夹中来避免此类事故。
  • 不要将依赖项放入资源文件夹。请改用您自己的存储库管理器。
  • 这是一个选项,但我目前没有指向的存储库,因此资源文件夹本身的包装
  • 我强烈建议完全按照 J Fabian Meier 的建议为这种情况设置存储库管理器...您可以在 Maven 中上传工件,您可以采用默认方式...除此之外资源文件夹是绝对错误的,因为在项目构建期间资源文件夹将被复制到 target/classes 这是错误的......所以你应该考虑使用不同的目录并通过 file://${project.basedir} 配置文件存储库但要小心不同的平台(如 Windows)它可能会失败....

标签: spring-boot maven jar


【解决方案1】:

您可以将所有库放在项目中或本地某个文件夹中的单个文件夹中。然后,您可以将它们添加到您的 maven POM。

假设您将所有 jar 文件放在基础项目目录中名为 libs 的文件夹中。然后,您可以在 maven POM 中添加类似于以下内容的内容。

<groupId>com.abc.xyz</groupId>
<artifactId>my-artifact-id</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${basedir}/libs/my-jar-name.jar</systemPath>

您需要使用范围system。摘自 Maven 网站,

Scope : system - 这个范围类似于提供的,除了你 必须提供明确包含它的 JAR。神器是 始终可用且不在存储库中查找。

Maven Documentation

如果您进一步阅读,它还提到这已被弃用。因此,这是一个不错的快速修复或 hack,但最好的办法是按照其他人的建议设置存储库管理器。

【讨论】:

    猜你喜欢
    • 2012-09-08
    • 2018-11-07
    • 1970-01-01
    • 2018-06-28
    • 2020-08-23
    • 2017-02-26
    相关资源
    最近更新 更多