【问题标题】:Is it possible to have several files referenced by one maven artifactID?一个maven artifactID是否可以引用多个文件?
【发布时间】:2014-04-15 01:06:39
【问题描述】:

通常(我只看到过这样的)maven 工件是一个罐子。是否可以将 maven 神器制作为几个罐子。目前我必须在我的关系中添加几个第三方库 - 我希望它们在 maven 中作为一个工件被引用。

【问题讨论】:

  • 什么样的神器?如果这些工件属于同一个 groupId/artifactId,则使用分类器可能会很有用,但通常不是。

标签: java maven build pom.xml nexus


【解决方案1】:

通常(我只看到过这样的)maven 工件是一个罐子。是否可以将 maven 神器制作成几个罐子。

该陈述部分正确。是的,maven 工件是单个 jar 单元,但是这个单个 jar 单元很可能需要多个其他 jar 才能正常运行。一个这样的例子可能是spring-core jar。如果您只在应用程序中添加 spring-core jar,它很可能会给您一个 ClassNotFoundException 并抱怨多个其他缺少的依赖项(如 log4j、spring-web、commons 等)。为了应对这种嵌套依赖问题,我们在 maven 中有 transitive dependencies 的概念

目前我必须将多个第三方库添加到我的关系中

在我看来,没关系,它应该是。所有工件和 jar 库都应该分开。

我希望它们在 maven 中作为一个工件被引用。

如果你想创建一个大(胖)罐子,看看how to create a uber shaded jar in maven

【讨论】:

    【解决方案2】:

    如果您只是想将它们全部包含在一起,您可以创建一个 pom 项目,其中包含所有第三方库作为依赖项。因此,您只需将 pom 项目添加为依赖项:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>my.demo</groupId>
    <artifactId>all-my-libs</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    
    <dependencies>
      <dependency>
        <groupId>l1</groupId>
        <artifactId>lib1</artifactId>
        <version>1.0</version>
      </dependency>
      <dependency>
        <groupId>l2</groupId>
        <artifactId>lib2</artifactId>
        <version>1.0</version>
      </dependency>
      ...
    </dependencies>
    </project>
    

    这样,你仍然会有几个 jars,但只有一个依赖项。

    【讨论】:

      【解决方案3】:

      您应该阅读pom&lt;scope&gt;import&lt;/scope&gt; 的依赖关系,如here 所示。

      基本上,您需要使用所需的所有依赖项创建 pom,然后使用范围 import 定义对其的依赖项。

      【讨论】:

      • 在 Nexus 中,您可以上传单独的工件,其中 pom 文件将由 Nexus 自动生成。因此无需手动创建 pom 文件。
      • @khmarbaise,我相信 OP 在谈论不同的事情。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      相关资源
      最近更新 更多