【问题标题】:Create standalone jar out of multiple Maven projects从多个 Maven 项目中创建独立的 jar
【发布时间】:2018-11-11 07:45:24
【问题描述】:

我有 3 个 maven 项目,分别是 P1、P2 和 P3。我已将 P1 的依赖项添加到 P2 中,并将 P2 的依赖项添加到 P3 中。如何创建 P3 的独立 jar? 我正在使用 Eclipse,所有三个 Maven 项目都在同一个工作区中。

【问题讨论】:

    标签: eclipse maven


    【解决方案1】:

    您构建项目 P3,并配置 Maven 以构建一个包含所有依赖项的“胖 jar”。

    最直接的方法是通过Maven组装插件构建jar-with-dependencies

    详情请见https://stackoverflow.com/a/574650/927493

    【讨论】:

    • 我是 Maven 新手。您能否提供分步指南?
    • 查看链接的答案,它解释了您需要放入 pom.xml 的内容。如果您有具体问题,请随时提出。
    • 然后我需要阅读所需的 Maven 文档,因为答案非常适合那些已经了解 Maven 的人。谢谢。
    • 您知道 pom.xml 和标准构建命令(如mvn install),对吗?然后只需将 second xml sn-p 复制并粘贴到 pom.xml 的 <plugins> 部分。现在每个mvn install 都会创建一个包含所有依赖项的附加 jar。
    • 好的,所以如果你真的有一个既不使用 Maven 也不使用 Gradle 的项目(现在很少见),那么这可能是一个选择。但你实际上是我听说过的第一个想要构建这样一个“api fat jar”的人。请三思而后行。我出去了。
    【解决方案2】:

    我建议使用maven-shade-plugin 而不是组装插件,因为最新的组装插件 (3.1.0) 非常慢,并且需要花费一分钟多的时间来打包我们的一些 jar。切换到阴影插件解决了这个问题。该插件有一组丰富的配置选项,例如create an executable jar

    这是一个没有任何自定义配置的基本示例:

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    

    【讨论】:

    • 我添加了这个,但仍然无法执行。无法解析其他项目的依赖关系。
    • 您的项目以前构建过吗?再说一遍:请不要尝试构建一个巨大的 api jar。没有人这样做,如果你是 Maven 新手,你可能不明白后果。
    猜你喜欢
    • 2011-10-23
    • 2012-05-26
    • 2013-10-19
    • 2022-01-16
    • 2015-07-24
    • 2010-11-26
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    相关资源
    最近更新 更多