Java 使用本地分叉的maven方法是什么?
我有一个JavaSpringWebApp,WebappA,它使用Library。图书馆Y使用另一个图书馆,图书馆Z LibraryY和LibraryZ都是支持forkable github repo的操作系统 我想在LibraryZ中改变一些东西,这样我的改变可以被推回到原始回购协议 使用maven和github实现这一点的最佳途径是什么?马文的方式是什么 我将Y和Z克隆到我的机器上,并在每个机器上运行mvn安装。他们各自构建了JAR,这很好,但是WebappA依赖于发布版本,所以我在~/.m2/[…]中创建*-快照版本什么都没做。我想?这很好 我应该如何将源代码修改为LibraryZ,以便WebappA在本地使用它 我尝试将LibraryZ的版本号更改为“*-mybuild”,但它本身没有生成,因为它的子模块(没有依赖项)将LibraryZ声明为其父模块,并且它们的“父模块”由版本号引用?我想是吧 一位同事建议更改LibraryZ的groupId,但我没有尝试过,因为这似乎比更改所有这些pom文件中的所有版本号更疯狂 看起来happy path通过更改版本号改变了几十个pom文件,但这似乎是疯狂和错误的 我觉得我错过了一些东西,因为这似乎不对 对我的应用程序使用的java库的本地分支进行更改的maven方法是什么 谢谢Java 使用本地分叉的maven方法是什么?,java,spring,maven,git-fork,Java,Spring,Maven,Git Fork,我有一个JavaSpringWebApp,WebappA,它使用Library。图书馆Y使用另一个图书馆,图书馆Z LibraryY和LibraryZ都是支持forkable github repo的操作系统 我想在LibraryZ中改变一些东西,这样我的改变可以被推回到原始回购协议 使用maven和github实现这一点的最佳途径是什么?马文的方式是什么 我将Y和Z克隆到我的机器上,并在每个机器上运行mvn安装。他们各自构建了JAR,这很好,但是WebappA依赖于发布版本,所以我在~/.m2
-尼尔你的问题有两个截然不同的方面:
mvn版本:set
执行此操作
使用A的POM的
部分将Z的版本设置为1.5.1-SNAPSHOT。这将覆盖Y引用的Z的版本
这将足以测试您的更改。然后,您可以向Z提交补丁或拉取请求,并希望您的更改将包含在下一版本中。如果是这样的话,那么只需将您的dependencyManagement
中的Z版本升级到1.5.1(或任何下一个官方版本)
如果Z项目不接受您的更改,或者如果您需要在下一个版本完成更改之前发布A,那么您需要处理方面2
到目前为止,您已经有了自己的本地1.5.1-SNAPSHOT,它不同于官方的Z快照,这是正常的,因为Maven快照是不稳定的
但是,您的A发行版不能依赖于Z快照,并且所有发行版(包括Z)都是不可变的,因此您应该而不是简单地构建您的Z fork的本地发行版,并将其命名为1.5.1,因为这与官方的Z 1.5.1发行版不同,后者可能会在下周发布,也可能永远不会发布
在这种情况下,常见的做法是(例如在WildFly/JBoss社区项目中)保留官方groupId
和artifactId
,但使用后缀为1.5.0-foo-1
的版本,其中foo
是与项目或组织相关的标识符
如果您在fork中发现bug,您可以执行后续版本
1.5.0-foo-2
,1.5.0-foo-3
,等等。关于GitHub,有没有可用的带有快照依赖关系的项目“开发”分支?好问题,但我要问的是maven的习惯用法。我应该期待一个吗?您能解释一下使用快照和其他版本构建库Z时的确切错误吗?当然,更改groupId不是解决方案(即使它有效,也不应该使用)。通常,每当我们进行项目时,我们都会通过添加快照作为后缀来升级版本(主要版本和次要版本)。我不明白为什么会有4票来结束这个问题,因为这太广泛了。问题描述很清楚,这是一个普遍感兴趣的问题。