Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用本地分叉的maven方法是什么?_Java_Spring_Maven_Git Fork - Fatal编程技术网

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

我有一个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方法是什么

谢谢


-尼尔

你的问题有两个截然不同的方面:

  • 如何确保应用程序A和库Y使用分叉版本的Z
  • 如何避免fork和Z的官方版本之间的混淆
  • 关于1,假设您的起点是Z的一个发布版本,比如1.5.0,那么您将分叉Z的主分支或主干分支,它很可能位于下一个SNAPSHOT版本,比如1.5.1-SNAPSHOT

    如果您想从1.5.0基线开始,只包括您自己的修改,不包括Z master最近的任何更改,那么您需要从1.5.0标记开始一个分支,并且必须将Maven版本更新为1.5.1-SNAPSHOT(或任何您喜欢的SNAPSHOT)。您可以使用
    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票来结束这个问题,因为这太广泛了。问题描述很清楚,这是一个普遍感兴趣的问题。