maven - 用于 fork 的 Maven 项目的版本标签是什么?

标签 maven versioning

我经常不得不 fork 一个使用 Maven 的 Java 项目(通常在 github 上)。

当我 fork 项目并进行更改时,我通常希望将发布版剪切到我自己的私有(private)(但在 Internet 上)maven 存储库。

因此,我的自定义版本应该是什么版本标签的问题。我做不到SNAPSHOT因为我需要它来发布。有时我会在项目后缀 .ADAMGENT (因为我是个自恋者)。假设我 fork 1.0.4-SNAPSHOT .我可能会将其更改为 1.0.4.ADAMGENT .我不知道这是否是个好主意。在某些情况下,我什至不能用 .ADAMGENT 作为后缀。因为 Spring 的 Gradle 构建工具不喜欢这样。所以对于 Spring 项目,我会做 .ADAMGENT.RELEASE.ADAMGENT.M1如果它是一个里程碑。

别人做什么?

更新:虽然我说的是 fork ,但我提到了更多补丁级别的更改。另一方面,赏金(由不同的用户)可能是 fork 和/或 patch

最佳答案

因为您正在 fork ,所以请使用不同的组 ID。

现实情况是,一旦您开始对本地 fork 进行更改,它就是一个不同的 Artifact 。由您的组织制作的 Artifact ,而不是您从中获取的 Artifact 。

关于版本号,如果您的更改始终是次要的,我会在 fork 时使用源树的主要版本号和可能的次要版本号,否则,我会从 1.0.0 重新开始,在项目 POM 中记下我从哪个版本 fork 它。

例如:

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.adamgent</groupId>
    <artifactId>project-xyz</artifactId> <!-- same artifact ID -->
    <version>1.0.0-RELEASE</version>
    <name>My Project XYZ</name> <!-- different display name -->
    <description>My fork of project XYZ created from v5.42.0 of original sources.</description>
    ....

切换依赖项的组 ID 并不比切换版本 ID 更难。这两种机制都可以用来轻松获得所需的发布 Artifact 。但是,通过更改组 ID,您可以获得以下优势:
  • 您可以更轻松地在 Nexus
  • 中跟踪您的 fork
  • 您消除了由于拥有非他们创建的组织的 Artifact 而可能引起的任何混淆
  • 你留在standard guidelines用于 Maven 版本标识符
  • 关于maven - 用于 fork 的 Maven 项目的版本标签是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10415550/

    相关文章:

    svn - 如何对可能无法按顺序完成的并行开发的里程碑进行版本控制?

    module - Raku 如何决定加载哪个版本的模块?

    Maven 项目初始化器

    java - "Managed by CM"CM是什么意思

    java - 依赖管理和构建管理工具有什么区别?

    java - Maven 强制包含其中没有 java 类的包

    jakarta-ee - 仅使用 Maven 在 CI 服务器上运行集成测试

    .net - 为什么 NuGet 会根据您的开始位置以不同方式解析版本?

    android - Problema更新和上传我的apk

    maven-2 - 如何在maven中发布依赖于第3方SNAPSHOT项目的项目