【问题标题】:Version of a module POM from parent POM来自父 POM 的模块 POM 的版本
【发布时间】:2021-11-12 08:05:14
【问题描述】:

有没有办法从父 POM 中引用模块 POM 的版本属性?理想情况下是这样的:${project.modules[0].version}


<?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>
 
    <!-- parent pom (me) -->
    <groupId>net.example.rsp</groupId>
    <artifactId>auth-service-builder</artifactId>
    <packaging>pom</packaging>
    <version>1.0.0</version>
 
    <!-- sub modules -->
    <modules>
        <module>../auth-service</module>
        <module>../common</module>
        <module>../auth-common</module>
        <module>../auth-interface</module>
    </modules>
 
    ...
</project>

【问题讨论】:

    标签: pom.xml


    【解决方案1】:

    你不仅不能将版本信息传递给子 POM,而且你会发现 Maven 不喜欢将其他信息(例如绝对文件系统路径)注入 POM。

    这是有充分理由的。

    首先是便携性。正如我多次说过的,Maven 的优点之一是我可以执行“mvn clean”,压缩项目,将其发送到 Ulan Bator,那里的人可以完全复制仅使用 JDK 和 Maven 武装的可执行文件,没有丢失的文件,没有“版本地狱”。如果您认为这并不重要,那么您从来没有在一家商店工作过,您被要求使用来自另一个部门的东西,他们的目录设置与您的完全不同和/或不同版本的库安装在不同的系统上。

    与此相关的是自给自足的概念。正如我所说,要忠实地重新构建一个项目,您所需要的只是 Maven 和兼容的 JDK。期间。

    现在让我们考虑一下您的情况,您有一个要在 POM 树中应用的主版本号。没有。这不是 Maven 方式。每个 Maven 人工制品版本都是对其构建项目的一组独特更改的指标。您不只是创建具有不同版本号的重复工件。这不仅会导致混乱,而且还不允许逐步迁移项目的子组件。

    您应该构建您的 POMS - 所有这些 - 以安装到您的本地存储库中,在企业环境中,我进一步建议安装到共享的内部存储库,这样人们就不必来回传递东西用手。如果您要进行持续集成,这也是您通常希望通宵构建和测试运行的地方。

    您可能需要进行快照构建。它们是通常针对您所描述的事情所做的事情。 Maven的快照构建相当不错。

    【讨论】:

      猜你喜欢
      • 2012-04-29
      • 2010-12-31
      • 2017-02-22
      • 2018-03-05
      • 2020-07-12
      • 2019-07-24
      • 2018-03-18
      • 2013-02-23
      • 1970-01-01
      相关资源
      最近更新 更多