java—一个maven artifactid可以引用多个文件吗?

j9per5c4  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(373)

通常(我只见过这样的)maven工件是一个jar。有没有可能把maven人工制品做成几个jar。目前,我必须将几个第三方库添加到我的nexus中—我希望它们作为一个工件在maven中引用。

bf1o4zei

bf1o4zei1#

通常(我只见过这样的)maven工件是一个jar。有没有可能把maven人工制品做成几个jar。
这一说法部分是正确的。是的,maven工件是一个jar单元,但是这个jar单元很可能需要多个其他jar才能正常工作。一个这样的例子可能是 spring-core jar。如果您只在应用程序中添加springcorejar,它很可能会给您一个classnotfoundexception,并抱怨其他多个缺少的依赖项(如log4j、springweb、commons等)。为了解决这个嵌套依赖问题,我们在maven中引入了传递依赖的概念
目前,我必须添加几个第三方libs到我的nexus
在我看来,这是好的,这是它应该的。所有工件和jar库应该是分开的。
我希望它们在maven中作为一个工件被引用。
不过,如果您想创建一个大(胖)jar,请看一下如何在maven中创建一个uber着色jar

5t7ly7z5

5t7ly7z52#

你应该好好读一读 pom 依赖关系 <scope>import</scope> 如图所示。
基本上,您需要用所有需要的依赖项创建pom,然后用scope定义对它的依赖项 import .

ia2d9nvy

ia2d9nvy3#

如果您只想将它们全部包含在一起,那么可以创建一个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>

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

相关问题