我经常需要派一个使用Maven的Java项目(通常在github上)。
当我分叉项目并进行更改时,我通常希望将一个版本剪切到我自己的私有(但在互联网上)maven存储库。
因此,我的自定义版本应该是什么版本标签的问题。我无法做SNAPSHOT
,因为我需要它才能成为一个版本。有时我用.ADAMGENT
后缀项目(因为我是一个自恋者)。让我说我叉1.0.4-SNAPSHOT
。我可能会将其更改为1.0.4.ADAMGENT
。我不知道这是不是一个好主意。在某些情况下,我甚至无法用.ADAMGENT
作为后缀,因为Spring的Gradle构建工具不喜欢它。因此,对于Spring项目,如果它是里程碑,我会.ADAMGENT.RELEASE
或.ADAMGENT.M1
。
其他人做了什么?
更新: 虽然我说fork我更多的补丁程度更改。另一方面,赏金(由不同的用户)可能用于分叉和/或补丁
答案 0 :(得分:18)
因为您要分叉,请使用其他组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>
....
切换依赖项的组ID比切换版本ID要困难得多。这两种机制都可以用来轻松获得所需的发布工件。但是,通过更改组ID,您可以获得以下优势:
答案 1 :(得分:5)
我通常会添加一个后缀(例如名称),然后添加一个正在运行的编号,以避免混淆我根据上游版本制作的多个版本。在您的设置中,这可能会转换为以下内容:
1.0.4-ADAMGENT-1
然后会跟1.0.4-ADAMGENT-2
,以防您需要进行其他更改。
绝对保留原始项目中的artifact
和group
ID以及您基于更改的版本,如果您必须找出哪个版本,这将在以后派上用场你一直在努力。如果您的更改包含在上游,则可以更轻松地切换到正式版。
答案 2 :(得分:2)
如果它是快照,我建议使用原始版本号(可以使用git?)或分叉它的日期,使用ADAMGENT(添加自己的后缀是一个非常好的主意)
e.g。
1.0.4-2011-09-12.ADAMGENT
答案 3 :(得分:1)
我确实找到了自己的解决方案。我不会将它标记为正确,因为我认为@DavidH确实有一些有效点,并且如果Maven具有Ivy替换groupid的配置级别(和/或我在sonatype中找到了怎么做)我可能会标记它正确。否则,我坚信fork应该是一个不同的命名空间,Java包名称应该与您的项目groupid有些内联。同样对于我的情况,我经常需要这样做以修复错误,所以它不是一个分支。
这就是我所做的,它基于maven如何读取版本号以及Sonatype的功能:
首先,我设置了我自己的公共但非中央存储库,我将在其中发布我的版本。您可以使用github和/或googlecode来托管这样的repo。网上有关于如何做到这一点以及如何发布它的指南,所以我不会进入那个。
对于版本号,我遵循以下格式,但Spring除外,因为Spring的构建系统有如我的问题中所述的奇怪要求:
1.0.4-ADAMGENT-1
更多更改和发布:
1.0.4-ADAMGENT-2
您可以看到Maven将主要通过looking at the code了解此格式。问题是ADAMGENT
限定符。 Maven只能正确理解一些限定符"alpha", "beta", "milestone", "rc", "snapshot", "", "sp"` and "ga", "final", "cr"。
它没有词法排序(在这种情况下为ADAMGENT
)这很好,我想你可以提升增量版本(4
)如果这是一个问题。