通常(我只见过这样)maven神器是一个罐子。是否有可能将maven神器制成几个罐子。目前我必须在我的nexus中添加几个第三方库 - 我希望它们在maven中作为一个工件进行引用。
答案 0 :(得分:1)
通常(我只见过这样)maven神器是一个罐子。是否有可能将maven神器制成几个罐子。
这种说法部分正确。是的maven工件是一个单独的jar单元,但很可能这个单独的jar单元可能需要多个其他jar才能正常工作。一个这样的例子可能是spring-core
jar。如果你只在你的应用程序中添加spring-core jar,它很可能会给你一个ClassNotFoundException并抱怨其他多个缺少的依赖项(比如log4j,spring-web,commons等等)。为了解决这个嵌套的依赖问题,我们在maven中有transitive dependencies的概念
目前我必须将几个第三方库添加到我的nexus
在我看来,没关系,它应该如此。所有工件和jar库都应该是分开的。
我希望它们在maven中被引用为一件神器。
如果你想制作一个大(胖)罐子,请看看maven中的how to create a uber shaded jar
答案 1 :(得分:1)
如果您只是想将它们全部包含在一起,您可以创建一个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>
这样,你仍然会有几个罐子,但只有一个依赖品。
答案 2 :(得分:1)
您应该阅读pom
<scope>import</scope>
依赖项,如here所示。
基本上,您需要使用所需的所有依赖项创建pom,然后使用范围import
定义与它的依赖关系。