【问题标题】:How to include maven dependencies in a jar file? [duplicate]如何在 jar 文件中包含 Maven 依赖项? [复制]
【发布时间】:2015-04-04 18:08:18
【问题描述】:

我有一个 Eclipse Luna 项目,在 pom.xml 中定义了一堆 maven 依赖项

在 Eclipse 中一切正常。但现在我需要将所有这些依赖项包含在一个可导出的 jar 文件中(以便我可以将它们发送给 Apache Spark 中的工作人员)。

我一直在修改导出设置,但我看不到任何将它们导出到 jar 文件中的方法。

我找到了一些解释如何配置 maven 来打包其依赖项的答案。这是我唯一的选择,还是在 Eclipse 中有一些方法可以做到这一点?

【问题讨论】:

  • 您将在本地 Maven 存储库(通常为 ~/.m2/)中拥有作为 JAR 的依赖项。使用这些还不够吗?如果没有,请查看this somewhat related question
  • 我目前没有安装 Eclipse - 但据我记得“导出可运行 jar”对话框可能是您正在寻找的。​​span>
  • 只是想知道,为什么不使用 Maven 进行这种发布呢?通过 maven 组件或 maven shade 插件来完成是微不足道的
  • 是的,我相信配置maven是你唯一的选择。正如@AdrianShum 建议的那样,使用 maven 程序集插件或 maven shade 插件来实现这一点。

标签: java eclipse maven


【解决方案1】:

看看这个问题:How can I create an executable JAR with dependencies using Maven?

我认为@Rocky Inde 的答案是您正在寻找的(使用 eclipse):

1) 只需右键单击您的项目文件夹(在 Eclipse 中)并选择 导出

2) 然后选择 Java -> Runnable Jar

3) 系统会要求您选择 jar 文件的位置

4) 最后,选择具有您想要的 Main 方法的类 运行并选择带有 Jar 文件的 Package dependencies 并单击 Finish

【讨论】:

  • 只适用于可运行的jar
【解决方案2】:

我认为这个问题是重复的:

如果你想用控制台和 Maven 来做,你可以看看这个帖子:the link that @Tarik mentions

如果你想使用 Eclipse,看看这个:How to create a jar with external libraries included in eclipse?

【讨论】:

    【解决方案3】:

    然后您需要在 pom.xml 中包含 shade 插件,mvn package 将生成 shade jar(fat jar) this 链接提供有关 shade 插件的信息

    【讨论】:

    • 更新了答案..
    • 就个人而言,如果我告诉某人为 uber-jar 使用 shade 插件,我会明确告诉他们为 uber-jar 制作一个单独的分类器,因为如果无论如何,您使用结果 uber-jar 作为另一个项目的依赖项。
    【解决方案4】:

    我建议你使用 Maven 程序集插件。从使用页面:

    例如,假设我们的项目生成了一个 JAR。如果我们想创建一个包含项目依赖项的程序集二进制文件,我们可以利用程序集插件的预制描述符之一。您在项目的 pom.xml 中对其进行如下配置:

    <project>
      [...]
      <build>
      [...]
      <plugins>
        <plugin>
          <!-- NOTE: We don't need a groupId specification because the group is
             org.apache.maven.plugins ...which is assumed by default.
           -->
          <artifactId>maven-assembly-plugin</artifactId>
          <version>2.5.3</version>
          <configuration>
            <descriptorRefs>
              <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
          </configuration>
          [...]
    </project>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-27
      • 2010-12-16
      • 2016-06-04
      • 2023-03-30
      • 2011-10-23
      • 2015-01-27
      • 2018-07-09
      相关资源
      最近更新 更多