我让项目B从项目A继承。在项目A中,我必须将从Maven下载的jar文件复制到lib文件夹中。项目A的pom文件:
<groupId>com.penguin.com.projecta</groupId>
<artifactId>penguin-common--pom</artifactId>
<packaging>pom</packaging>
<version>${com.penguin.common.projecta}</version>
<name>Penguin COMMON POM</name>
<modules>
<module>projectb</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-jars</id>
<phase>process-sources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<overWriteIfNewer>true</overWriteIfNewer>
<artifactItems>
<artifactItem>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>1.1</version>
<type>jar</type>
<destFileName>ant-contrib.jar</destFileName>
<outputDirectory>lib</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
当我构建时,maven将jar文件复制到lib文件夹,但它也会在项目B中创建lib文件夹,并将项目A的pom文件中定义的jar文件复制到其中。现在我想在项目B中排除它。我尝试使用下面的脚本,但它不起作用。
<dependencies>
<dependency>
<groupId>com.penguin.com.projecta</groupId>
<artifactId>penguin-common--pom</artifactId>
<version>${com.penguin.common.projecta}</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
我指的是这个链接:是否存在排除从父POM继承的工件的方法?。但这对我也没有帮助。
您的排除项列在错误的位置。您希望从 maven 依赖项插件的配置中排除工件,而不是从项目依赖项中排除。这里的神奇成分是属性组合.self=“覆盖”
来自Maven Pom参考:“您可以通过将属性添加到配置元素的子元素来控制子Pom如何从父Pom继承配置。属性是combine.children和combined.self。在子Pom中使用这些属性来控制Maven如何将来自父Pom的插件配置与子Pom的显式配置相结合。”
您需要将子pom中的设置更改为以下内容:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-jars</id>
<phase>process-sources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<overWriteIfNewer>true</overWriteIfNewer>
<artifactItems combine.self="override">
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
我不确定是否有可能仅仅排除一个特定的工件,而不是凌驾于整个工件声明之上,这就是我偶然发现您的问题时所寻找的。为了解决这个问题,我的设置可能涉及多pom继承,因为我们在插件配置中列出了近100个工件,我只想在不同的实现中排除和交换我的子pom中的一些工件。
虽然我怀疑你的项目结构是否正确(我想不出一个很好的例子,其中父pom应该复制依赖项...),但你可能正在寻找继承的标签
在我的父pom xml文件中,我声明了一些在大多数孩子的pom中使用的依赖项。 然而,在一个子pom中,我不使用这些依赖项,我想找到一种方法来排除它们(为了不被视为未使用的依赖项)。 现在,在子pom的依赖部分,我什么都没有!有什么想法吗?
问题内容: 可以通过在内部声明一个元素来排除依赖项中的工件,但是在这种情况下,需要排除从父项目继承的工件。讨论中的POM的摘录如下: 工件,取决于 ,并且取决于同一库的另一个版本。由于执行环境上存在from 的事实,尽管未导出,但与父级上存在的from发生冲突,其范围为。 一种解决方案是从父POM摆脱mail.jar,但是大多数继承base的项目都需要它(log4j的传递依赖项)。因此,我想做的就
我试图理解从根pom文件到中级pom文件的继承指令。说明书上写着: 定义父pom文件继承和groupid、artifactid(但不是版本),从中间级父级到根pom文件。
我有一个maven工件(),它依赖于某个工件()。 有一个父pom,其中包含某些其他依赖项。 是否可以使用这些依赖项,而无需在其自身pom的依赖项部分中明确添加它们?
null 但是当我在一个项目中看到有效的POM时,我发现它还继承了、(这是一个问题,这应该是包含它的POM的描述,而不是它的子级。所有子级都有一个类似“所有POM的根”的描述有什么意义) 那么,是否存在一个实际的列表,或者它只是从父POM继承所有内容?我在工件的清单中使用了其中的一些属性,因此我想添加有意义的值
我是使用maven和jenkins的新手。我正在尝试从父pom继承到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子波姆: 这是我如何尝试从父POM继承子POM中的依赖关系: 如果我在子POM中放置这些相同的依赖项,它会完美地工作。我使用jenkins在nexus中进行安装和部署。我使用的是maven-3.3.9。在jenkins中,我阅读了git中两个不同maven项目中