什么版本标签用于分叉的maven项目?

Ada*_*ent 17 versioning maven

我经常需要分叉一个使用Maven的Java项目(通常在github上).

当我分叉项目并进行更改时,我通常希望将一个版本剪切到我自己的私有(但在互联网上)maven存储库.

因此,我的自定义版本应该是什么版本标签的问题.我不能这样做,SNAPSHOT因为我需要它才能成为一个版本.有时我用项目后缀.ADAMGENT(因为我是一个自恋者).让我说我叉1.0.4-SNAPSHOT.我可以改成它1.0.4.ADAMGENT.我不知道这是不是一个好主意.在某些情况下,我甚至不能使用.ADAMGENTSpring的Gradle构建工具不喜欢它.所以对于我做的Spring项目.ADAMGENT.RELEASE或者.ADAMGENT.M1它是一个里程碑.

其他人做什么?

更新: 虽然我说fork我更多的补丁程度更改.另一方面,赏金(由不同的用户)可能是用于分叉和/或补丁

HDa*_*ave 20

因为您要分叉,请使用不同的组ID.

实际情况是,一旦你开始对你的本地分支进行更改,它就是一个不同的工件.由您的组织制作的工件,而不是您从中获取的工件.

关于版本号,如果你的更改总是很小的,我在分叉时会使用源树的主要版本号和可能的次版本号,否则,我将在1.0.0再次重新开始在项目POM中记下我从哪个版本分叉它.

例如:

<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>
    ....
Run Code Online (Sandbox Code Playgroud)

切换依赖项的组ID比切换版本ID要困难得多.这两种机制都可以用来轻松获得所需的发布工件.但是,通过更改组ID,您可以获得以下优势:

  1. 您可以更轻松地在Nexus中跟踪您的货叉
  2. 您可以消除由于他们没有创建的组织中的工件而产生的任何混淆
  3. 您仍然符合 Maven版本标识符的标准准则

  • @AdamGent如果您使用的是版本号,您可能需要查看[ComparableVersion](https://git-wip-us.apache.org/repos/asf?p=maven.git;a=blob; f = maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java)并查看是否可以制作类似`-beta-adamgent-1`的内容.简单地使用`-adamgent-1`将是比`-rc`或`-ga`更新的版本. (2认同)

nwi*_*ler 5

我通常添加一个后缀(例如名称),然后添加一个正在运行的数字,以避免混淆我根据上游版本制作的多个版本.在您的设置中,这可能会转换为以下内容:

1.0.4-ADAMGENT-1
Run Code Online (Sandbox Code Playgroud)

1.0.4-ADAMGENT-2如果你不得不做出另一个改变,那么接下来会跟着.

绝对保留原始项目的ID artifactgroupID,以及您基于更改的版本,如果您必须找出您正在处理的版本,这将在以后派上用场.如果您的更改包含在上游,则可以更轻松地切换到正式版.