【问题标题】:Packaging a Jar with no third party dependencies in Maven在 Maven 中打包一个没有第三方依赖的 Jar
【发布时间】:2018-12-12 17:20:48
【问题描述】:

我已经用 Java 创建了几个项目,我想将它们打包成一个组。我创建了一个包装器项目来保存这些。所以我们几乎有这样的设置

  • 项目 1 - 依赖于 ThirdPartyProject1
  • 项目 2 - 依赖于 ThirdPartyProject2
  • 项目 3 - 依赖于 ThirdPartyProject3
  • WrapperProject - 依赖于 Project1、Project2 和 Project3。

我们正在打包一个使用 WrapperProject 的项目,我的主管希望将第三方依赖项打包在单独的文件中,而不是在组装期间生成的 WrapperProject.jar。

我想知道这是否可能以及如何实现?我一直在研究 Maven 依赖插件,但之前没有使用过它,所以我不太确定它是如何工作的。归根结底,我想要一个 lib 文件夹和一个看起来像这样的 Jar 文件。

库 -ThirdPartyProject1.jar -ThirdPartyProject2.jar -ThirdPartyProject3.jar

WrapperProject.jar - Project1.jar - Project2.jar - Project3.jar

【问题讨论】:

  • 7个项目都是用Maven管理的吗?

标签: java maven jar


【解决方案1】:

您可以使用copy resources 插件来创建/target/lib 文件夹。或者您可以使用assembly plugin 创建所有依赖项的 jar/zip。我不确定你对 lib 目录做了什么,但将它作为一个 zip 文件可能会更方便。

【讨论】:

    【解决方案2】:

    如果第三方 jar 在 maven 存储库中可用,那么您可以使用正常的 maven 构建命令“mvn package”, 否则 jar 是项目特定的自定义一个,那么您应该使用命令“mvn install”将该 jar 安装到您的 maven 本地存储库中。参考以下链接,

    http://www.mkyong.com/maven/how-to-include-library-manully-into-maven-local-repository/

    完成后,将该依赖项和以下构建配置包含到您的 pom.XML 中,然后更改主类。

     <build>
      <plugins>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <configuration>
            <archive>
              <manifest>
                <mainClass>fully.qualified.MainClass</mainClass>
              </manifest>
            </archive>
            <descriptorRefs>
              <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
          </configuration>
        </plugin>
      </plugins>
    </build> 
    

    现在构建项目,你会得到两个jar,一个是没有依赖的,另一个是有依赖类的。

    【讨论】:

    • 感谢您的建议,但问题是我有一个完全没有依赖项的 jar,并且其中包含所有依赖项。我正在寻找一个只有某些依赖项(我的项目)的 jar 和一个包含所有第三方 jar 的文件夹。
    • 如果你使用 maven 项目意味着,它会照顾依赖 jars。所以我们不需要将依赖 jar 放在文件夹 (lib) 和所有文件夹中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 2016-07-28
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多