可以通过<exclusions>
在内部声明一个元素来排除依赖项中的工件,<dependency>
但是在这种情况下,需要排除从父项目继承的工件。讨论中的POM的摘录如下:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>jruby</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<artifactId>base</artifactId>
<groupId>es.uniovi.innova</groupId>
<version>1.0.0</version>
</parent>
<dependencies>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>ALL-DEPS</artifactId>
<version>1.0</version>
<scope>provided</scope>
<type>pom</type>
</dependency>
</dependencies>
</project>
base
工件,取决于 javax.mail:mail-1.4.jar
,并且ALL- DEPS
取决于同一库的另一个版本。由于执行环境上存在mail.jar
from 的事实ALL- DEPS
,尽管未导出,但与mail.jar
父级上存在的from发生冲突,其范围为compile
。
一种解决方案是从父POM摆脱mail.jar,但是大多数继承base的项目都需要它(log4j的传递依赖项)。因此,我想做的就是 从子项目中 简单地
排除父级库 ,因为如果base
是依赖项而不是父级pom ,可以这样做:
...
<dependency>
<artifactId>base</artifactId>
<groupId>es.uniovi.innova</groupId>
<version>1.0.0</version>
<type>pom<type>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
</exclusions>
</dependency>
...
一些想法:
在这种情况下,您可能根本无法从父项继承(并声明base
排除项的依赖项)。如果您在父pom中有很多东西,则不方便。
要测试的另一件事是在父pom 下声明mail
具有所需版本的工件以强制收敛(尽管我不确定这是否可以解决范围问题)。ALL-DEPS``dependencyManagement
<dependencyManagement>
<dependencies>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>???</version><!-- put the "right" version here -->
</dependency>
</dependencies>
</dependencyManagement>
mail
,如果您不使用依赖于log4j的功能,则可以将其从log4j中排除(这就是我要做的): <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
</dependency>
我让项目B从项目A继承。在项目A中,我必须将从Maven下载的jar文件复制到lib文件夹中。项目A的pom文件: 当我构建时,maven将jar文件复制到lib文件夹,但它也会在项目B中创建lib文件夹,并将项目A的pom文件中定义的jar文件复制到其中。现在我想在项目B中排除它。我尝试使用下面的脚本,但它不起作用。 我指的是这个链接:是否存在排除从父POM继承的工件的方法?。但这对我也没有帮助
我有一个maven工件(),它依赖于某个工件()。 有一个父pom,其中包含某些其他依赖项。 是否可以使用这些依赖项,而无需在其自身pom的依赖项部分中明确添加它们?
在我的父pom xml文件中,我声明了一些在大多数孩子的pom中使用的依赖项。 然而,在一个子pom中,我不使用这些依赖项,我想找到一种方法来排除它们(为了不被视为未使用的依赖项)。 现在,在子pom的依赖部分,我什么都没有!有什么想法吗?
我试图理解从根pom文件到中级pom文件的继承指令。说明书上写着: 定义父pom文件继承和groupid、artifactid(但不是版本),从中间级父级到根pom文件。
我是使用maven和jenkins的新手。我正在尝试从父pom继承到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子波姆: 这是我如何尝试从父POM继承子POM中的依赖关系: 如果我在子POM中放置这些相同的依赖项,它会完美地工作。我使用jenkins在nexus中进行安装和部署。我使用的是maven-3.3.9。在jenkins中,我阅读了git中两个不同maven项目中
问题内容: 我是使用Maven和Jenkins的新手。我试图继承从父pom到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子POM: 这是我尝试从父POM继承子POM中的依赖项的方法: 如果我将相同的依赖项放在子POM中,则效果很好。我使用jenkins在nexus中进行安装和部署。我正在使用maven-3.3.9。在詹金斯,我从git中阅读了两个不同的Maven项目中的父