当前位置: 首页 > 知识库问答 >
问题:

从父pom中移除子pom的maven依赖性

伊裕
2023-03-14

我有一个带有子pom B、C和D的父pom A,在B、C和D中,我有相同类型的依赖项。

ie父Pom

    <artifactID>blah</artifactID>
    <modules>
        <module>B</module>
        <module>C</module>
        <module>D</module>
    </modules>

儿童Pom

    <dependencies>
          <dependency>
              .
              .
              <scope>test</scope>
              <type>test-jar</type>
          </dependency>
    </dependencies>

到目前为止,我已经尝试过编辑插件surefire,当试图排除子pom的测试范围时,它不起作用。

我的问题是,是否有一种方法可以将概要文件添加到父pom中,以排除所有子pom的类型测试jar的所有依赖项。谢谢

共有1个答案

王棋
2023-03-14

由于您正在尝试更新test范围内的路径,因此您可以挂钩maven-surfire-plugin,它实际上负责构建测试类路径并排除不需要的依赖项或添加新依赖项。因此,如果您希望每个模块都应用此限制,您可以在子pom中添加以下条目,例如对于B:

<project>
  ...
  <artifactId>B</artifactId>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.17</version>
        <configuration>
          <classpathDependencyExcludes>
            <classpathDependencyExclude>${undesired-dependency-groupId}:${undesired-dependency-artifactId}</classpathDependencyExclude>
          </classpathDependencyExcludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>

或者,如果您希望所有子模块都继承这个限制,请在父pom中将它定义为基于概要文件的插件:

<project>
  ...
  <artifactId>A</artifactId>
  <module>B</module>
  <module>C</module>
  <module>D</module>
  ...
  <profiles>
    <profile>
      <id>custom-test-goal</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.17</version>
            <configuration>
              <classpathDependencyExcludes>
                <classpathDependencyExclude>${undesired-dependency-groupId}:${undesired-dependency-artifactId}</classpathDependencyExclude>
              </classpathDependencyExcludes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
  ...
</project>
 类似资料:
  • 在我的父pom xml文件中,我声明了一些在大多数孩子的pom中使用的依赖项。 然而,在一个子pom中,我不使用这些依赖项,我想找到一种方法来排除它们(为了不被视为未使用的依赖项)。 现在,在子pom的依赖部分,我什么都没有!有什么想法吗?

  • Maven插件及其在父pom中定义的依赖项,我不希望我的子pom包含该插件依赖项。 例如,如果有1个父级和100个子级,99个使用该插件并希望在一个子级中排除该插件。 我们如何才能实现这一目标?

  • 我是使用maven和jenkins的新手。我正在尝试从父pom继承到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子波姆: 这是我如何尝试从父POM继承子POM中的依赖关系: 如果我在子POM中放置这些相同的依赖项,它会完美地工作。我使用jenkins在nexus中进行安装和部署。我使用的是maven-3.3.9。在jenkins中,我阅读了git中两个不同maven项目中

  • 我们有一个模块化项目,包含大约10个工件: 此外,一些工件之间存在依赖关系: 我们当前的设置如下所示: parent是包含父POM的工件 这个父POM定义了所有必要的依赖项(比如Spring、JPA等等)进来 我们所有的工件也都在中定义 我们的工件将父工件称为明显的父工件 只有父POM定义版本。其他所有的POM都没有 我们使用三个数字的版本控制方案: 例如: 问题是: 一旦我们更改了工件的版本(例

  • 问题内容: 我是使用Maven和Jenkins的新手。我试图继承从父pom到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子POM: 这是我尝试从父POM继承子POM中的依赖项的方法: 如果我将相同的依赖项放在子POM中,则效果很好。我使用jenkins在nexus中进行安装和部署。我正在使用maven-3.3.9。在詹金斯,我从git中阅读了两个不同的Maven项目中的父

  • 我在父pom中有一个版本为2.3的Jackson,在我的子pom中我需要版本2.9,是否有任何方法排除父pom依赖?