【问题标题】:Maven: Include POM with used dependencies in assemblyMaven:在程序集中包含 POM 和使用的依赖项
【发布时间】:2012-11-29 14:27:51
【问题描述】:

我们向客户交付包含许多外部依赖项的软件包。现在客户可以使用你的库在上面开发东西。对于那些也在使用 Maven 的人,我们希望在包含所有依赖项的程序集中包含一个 pom.xml 文件,这样他们就可以在他们的 Maven 构建中简单地使用它:

它应该包含我们使用的所有依赖项,如下所示:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math</artifactId>
    <version>2.1</version>
    <scope>compile</scope>
</dependency>

有没有办法在 Maven 中实现这一点?

【问题讨论】:

    标签: maven dependencies pom.xml maven-assembly-plugin


    【解决方案1】:

    你的 jar/war 的 pom.xml 默认放置在你的 jar/war 中META-INF\maven\&lt;groupId&gt;\&lt;artifacdId&gt;的位置

    【讨论】:

    • True... 但是因为我们为所有包含所有库版本的子项目使用父项目,所以 jar 文件中的 POM 中不包含任何版本。我想我必须手动解决一些问题。
    • 您的客户只需添加/使用您的 jar 作为他们的依赖项,而第三方 jar 的信息全部被继承。此外,我们通常保持父和子 pom 版本同步以避免混淆。
    【解决方案2】:

    你有两个选择:

    第一种是最常见和首选的方式是依赖 Maven 的传递依赖解析。

    在您的项目中有一个 POM(假设名为 foo-api:1.0)来声明依赖项(例如 A:1.0:jarB:1.0:jar)。

    开发者自己的项目 (bar:2.0) 应该只依赖于foo-api:1.0。 Maven 将通过传递依赖解析简单地将A:1.0:jarB:1.0:jar 包含为bar:2.0 的依赖。

    另一种方式与上述方式类似,但使用foo-api:1.0作为bar:2.0的父POM。

    任何一种方式都应该可行,但哪种方式合适取决于您的设计。

    【讨论】:

      猜你喜欢
      • 2011-12-12
      • 2015-03-29
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      • 2010-12-16
      • 2016-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多