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

项目multipom首选项中的父pom和依赖项管理

文喜
2023-03-14

我有一个多普姆专家项目。在我的pom根中,我有一个父pom和依赖管理,具有Spring依赖关系。

<?xml version="1.0" encoding="UTF-8"?>
<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>com.company.project</groupId>
    <artifactId>artifactId</artifactId>
    <version>${project-version}</version>
    <packaging>pom</packaging>

    <!-- Parent Pom -->
    <parent>
        <groupId>com.company.project</groupId>
        <artifactId>parent_pom</artifactId>
        <version>1.0.0</version>
    </parent>

    <modules>
        <module>artifactId-war</module>
    </modules>

    <properties>
        <project-version>1.0.0</project-version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>4.3.3.RELEASE</spring.version>
    </properties>

    <dependencyManagement>
        <dependencies>
                <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-framework-bom</artifactId>
                <version>${spring.version}</version>
                <type>pom</type> -->
                <scope>import</scope>
            </dependency>

            ....

在我的人工战争中,我有这个pom。xml:

<?xml version="1.0"?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.company.project</groupId>
    <artifactId>artifactId-war</artifactId>
    <packaging>war</packaging>

    <parent>
        <groupId>com.company.project</groupId>
        <artifactId>artifactId</artifactId>
        <version>${project-version}</version>
    </parent>

    <dependencies>      
        <!-- Spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
        </dependency>   
...

我的问题是,在父pom中有一个spring旧版本(4.1.8),在我的根pom中,我使用4.3.3版本和工件spring框架bom。在“我的依赖项列表”中,项目显示为“父项”pom版本。如何优先考虑pom根的依赖关系?

共有2个答案

宋昕
2023-03-14

你的人工战争的pom。xml有一个错误。在

蒯安平
2023-03-14

您可以在artifactId war pom中声明正确的spring依赖项。Maven通过最短路径赢家规则解决冲突。

如果您只想通过父pom拥有一个整体控制,那么您可以在父pom中定义一个属性,但是您仍然需要在artifactId war pom中声明一个依赖项。

 类似资料:
  • 我们有一个Maven多模块项目,其中有大约30个子项目/模块。 使用这两个依赖项的所有子项目。(这只是为了在示例中放一些具体的东西) 因此,我们重构并将这两个依赖项放入父POM。上面的片段现在在父级别。所有子项目仍然可以从中受益,并且只需要在一个地方维护版本,所有人都很高兴。 我们现在有一个适合业务用例的第31个项目,适合这个多模块项目,我们相信把它放在同一个父POM下是有意义的。 然而,第31个

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

  • 使用STS点击pom.xml文件时,我可以查看这些选项卡 如何使用intelliJ IDEA,特别是依赖层次结构来查看所有这些选项卡?我试图通过右键单击pom来查看它。xml

  • 我创建了一个Maven项目(可重用库),该项目有许多依赖项(编译时和运行时),它们也可以过渡地依赖于其他许多依赖项。在maven中,我可以在pom中添加依赖项。xml及其可传递依赖关系将自动处理。所以,我将毫无问题地运行。 现在,我有一个非Maven(基于Ant的)项目,上面创建的库(Maven Lib)将使用它。 在这种情况下,运行时间

  • 最近,我发现了以下问题: 当我为我的项目设置依赖项管理时,我有一个child-pom,它使用具有依赖项的插件,我想要与在我的依赖项管理中声明的依赖项同步。 在根pom中,我在依赖项管理中声明: 在子pom中,我有一个插件需要gwt-user: 但是,如果我移除gwt-maven-plugin中使用的依赖版本,编译就会失败。 是不是还有别的办法可以实现呢? PS:在maven和maven插件中有一个

  • 在之前提到的多项目配置中,:libraries:lib1 和 :libraries:lib2 可以是 Java 项目,并且 :app 这个 Android 项目将会使用它们输出的 jar 包。然而,如果你想这部分代码能够访问 Android APIs 或者使用 Android 的资源,那么这些 Library 项目就不能是 Java 项目,只能是 Android Library 项目。