【问题标题】:How to share project dependencies among multiple projects in Maven?如何在 Maven 中的多个项目之间共享项目依赖关系?
【发布时间】:2016-07-26 19:57:34
【问题描述】:

我有以下项目结构

Main Project
--Sub Project 1
    - child 1
        * pom-child1
    - child 2
        * pom-child2
  * pom-sub-project1

--Sub Project 2
      * pom-sub-project2
* main project pom

我在主项目 pom 中定义了一些项目依赖项,并在子项目和子项目 pom 中引用了它。但是如果 pom 不是主要项目 pom 的直接子项,我会发现问题。有办法解决吗?

例如, 主项目pom

<packaging>pom</packaging>
<version>dev</version>
<name>parent-project</name>
..
<properties><spring-version>3.1.0.RELEASE</spring-version></properties>

子 POM

<parent>
        <groupId>com.test.pkg</groupId>
        <artifactId>test-proj</artifactId>
        <version>${project.version}</version>
    </parent>

如果 ${project.version} 不是父 pom 的直接子代,则不会解决任何项目依赖关系。

另外,我读到了 properties-maven-plugin,它用于从外部属性文件中读取属性。这可以用于读取依赖版本还是在这种情况下可以使用任何其他插件/方法?

【问题讨论】:

  • 主项目 pom 是否也定义为子项目 1 和 2 的父项目?子项目是否定义为子项目的父项目?您遇到什么类型的问题?
  • 哪个连接不工作?在哪些项目之间?
  • @A.DiMatteo Ex:在主项目下,我有不同的网络项目(子项目 1,2..),彼此独立。这些 Web 项目中的每一个都有子模块,这些子模块可以是公共库,也可以是其他相关的 Web 项目。他们每个人都有自己的pom。主项目的 pom 文件具有项目依赖项和版本,只有当它是直接子 pom 时才能访问,而在底层子模块中,项目版本或依赖项在构建期间未解决。向问题添加更多信息

标签: java maven dependencies pom.xml


【解决方案1】:

你不能使用

${project.version}

定义你的父母版本,因为孩子默认继承父母版本。

使用有效值而不是属性设置父版本。

如果您这样做,它应该可以工作,并且您不必指定子版本,因为它将继承自父版本。

【讨论】:

    猜你喜欢
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 2011-09-14
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多