【问题标题】:How to tell the project to download internal dependency?如何告诉项目下载内部依赖?
【发布时间】:2019-08-13 17:18:05
【问题描述】:

我有一个 JAR。它不是 FAT JAR。它只包含我的课程。但是我的 JAR 依赖于 azure-servicebus。我不想将 azure-servicebus 添加到我的 jar 中并使其成为一个胖 jar。

我只希望当项目添加我的 jar 时,它应该自动下载 azure-servicebus。

我正在使用 Maven 创建一个 jar(没有依赖项)。

我该如何指定?这可能吗?

编辑:

我希望将我的 jar 作为依赖项添加的项目应该下载 azure-servicebus 而无需项目添加对 azure-servicebus 的依赖项或我在 jar 文件中打包 azure-servicebus。

【问题讨论】:

    标签: java maven jar


    【解决方案1】:

    假设您的项目中已经有一个 maven 结构,您可以将以下行添加到您的 pom.xml

    <!-- https://mvnrepository.com/artifact/com.microsoft.azure/azure-servicebus -->
    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-servicebus</artifactId>
        <version>1.2.12</version>
    </dependency>
    

    如果您没有 maven 结构,则需要生成一个。这通常可以在您使用的 IDE 中实现。

    如果您希望生成的 jar 没有服务总线,您可以使依赖项仅进行某种编译,这或多或少是这个问题的重复:Is there a Maven "compiler-only" scope for dependency artifacts

    但是,这意味着您的目标运行时必须以某种方式包含类的定义(可能通过 -cp 开关)。

    来自我的 POV:如果您需要依赖项来运行您的程序,请在许可证允许的情况下包含它。

    【讨论】:

    • 这正是我不想要的。我希望将我的 jar 添加为依赖项的项目应该下载 azure-servicebus 而无需项目添加 azure-servicebus 的依赖项,或者我使用 jar 文件打包 azure-servicebus。
    • @FarazDurrani 这应该如何工作?这听起来本身就很矛盾?...
    • @khmarbaise 没有。我会写我自己的答案。我能够解决它。
    • @khmarbaise 我发布了我的答案。
    【解决方案2】:

    如果我理解正确,您所说的结构是:

    some-project 依赖于your-jar,而your-jar 又依赖于azure-servicebus

    如果some-project 声明了对your-jar 的Maven 依赖,那么它会自动获得azure-servicebus 作为依赖,因为Maven 进行传递依赖解析。因此,当您构建 some-project 时,azure-servicebus 将位于类路径中,如果 some-project 是 WAR/EAR,则 azure-servicebus 将成为该 WAR/EAR 的一部分。

    【讨论】:

      【解决方案3】:

      我在不知道非常重要的事情的情况下问了这个问题。

      当 jars 被放入 artifactory 时,一个对应的 .pom 文件也必须放在它旁边(在目录之外)。这个 pom 文件告诉依赖项目你所依赖的 jar,需要 so 和 so 依赖本身。

      这个答案帮助我理解了:

      https://stackoverflow.com/a/50002072/4828463

      感谢所有尝试过的人。

      【讨论】:

        猜你喜欢
        • 2018-03-06
        • 2012-11-11
        • 2023-03-20
        • 1970-01-01
        • 2013-04-23
        • 2010-10-28
        • 2017-07-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多