Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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
Maven 更改nexus中依赖项版本的最佳实践_Maven_Nexus - Fatal编程技术网

Maven 更改nexus中依赖项版本的最佳实践

Maven 更改nexus中依赖项版本的最佳实践,maven,nexus,Maven,Nexus,考虑一个在其他项目中使用的项目,该项目的版本为1.0,并且存在于Nexus中 之后,在这个项目中进行了一些更改。 现在有两种解决方案: 将项目版本增加到2.0,并从Nexus中删除版本1.0。当开发人员试图从版本为1.0的Nexus获取依赖项时,他们将得到一个错误,即该版本不存在,需要将版本更改为2.0 更改该项目的功能,并通知船员已进行了一些更改,但这根本不是惯例 Maven和Nexus中是否有任何功能可以简化这项任务,并在后端实现这一切,这样开发人员就什么都做不了,或者这是不可能的?如果您有

考虑一个在其他项目中使用的项目,该项目的版本为
1.0
,并且存在于Nexus

之后,在这个项目中进行了一些更改。 现在有两种解决方案:

  • 将项目版本增加到
    2.0
    ,并从Nexus中删除版本
    1.0
    。当开发人员试图从版本为
    1.0
    的Nexus获取依赖项时,他们将得到一个错误,即该版本不存在,需要将版本更改为
    2.0

  • 更改该项目的功能,并通知船员已进行了一些更改,但这根本不是惯例


  • Maven和Nexus中是否有任何功能可以简化这项任务,并在后端实现这一切,这样开发人员就什么都做不了,或者这是不可能的?

    如果您有一个旧版本的工件,因为它有一些危险的bug而不能再使用,或者它不适用于新的数据库结构或类似的东西,建议将其移动到一些非公共的Nexus存储库(并从构建服务器的本地存储库中删除),这样就没有人可以将其用于发布构建(人们可以将其用于本地构建,但这通常并不危险)

    如果您想在整个公司中管理标准版本,最好有一个父pom或一些BOM,它们在
    部分收集版本,并且可以由开发人员包括在内。这样,您只需要通知他们更改一个版本号(即父pom或bom中的一个版本号),而不是多个版本号


    不过,你仍然有一个问题,那就是人们不看公司的时事通讯。我知道一个问题,许多jar的开发人员在war/ear(包括jar)使用新版本时,根据其依赖项的非常旧的版本编译和测试其源代码

    如果您有一个旧版本的工件,因为它有一些危险的bug,或者它不能与新的数据库结构或类似的东西一起工作,因此不能再使用它,那么建议将它移动到一些非公共的Nexus存储库(并将其从构建服务器的本地存储库中删除),因此,没有人可以将其用于发布版本(人们可以将其用于本地版本,但这通常并不危险)

    如果您想在整个公司中管理标准版本,最好有一个父pom或一些BOM,它们在
    部分收集版本,并且可以由开发人员包括在内。这样,您只需要通知他们更改一个版本号(即父pom或bom中的一个版本号),而不是多个版本号


    不过,你仍然有一个问题,那就是人们不看公司的时事通讯。我知道一个问题,许多jar的开发人员在war/ear(包括jar)使用新版本时,根据其依赖项的非常旧的版本编译和测试其源代码

    为什么要删除1.0?版本控制的目的是禁止更改已发布产品中的内容。假设你可以,两个开发者甚至不能保证使用同一个版本的同一个库运行完全相同的代码。OK @ Tunaki,考虑我不删除版本,我做了一些改变,开发者是如何知道这个变化的?我所知道的是,如果开发人员第一次从nexus下载存储在
    .m2
    文件夹中的jar,那么他会将此jar与此功能一起使用。因此,如果我更改并重新安装此jar中的功能,开发人员仍会使用旧功能,因为他使用的是.m2中的jar,而不是nexus服务器中的jar,因为maven不会更改jar,因为它总是与同一GAV一起存在!我认为这是马文的政策我错了?稳定是这里的关键词。如果有人使用1.0版,他们的版本必须继续工作。也许1.0有缺陷,但没有理由完全删除它。我认为该项目是有文件记录的,有一个网站,等等。。。在那里显示最新版本,发送邮件,交流。是的,我支持你@Tunaki,我只想促进这项任务,那么解决方案是什么,或者仍然是老办法,用消息通知他们:(,我认为maven可以做得更好,你向meMaven建议的并不是开发人员之间交流的替代品。这在maven的历史上从来都不是目的。如果你将新版本部署到nexus,你必须通知依赖此项目的开发人员。有几种方法可以做到这一点。你为什么要删除1.0?版本控制的目的是不允许在发布的产品中改变事物。假设你可以,两个开发者甚至不能保证使用同一个版本中的同一个库运行完全相同的代码。OK @ Tunaki,考虑我不删除版本,我做了一些改变,开发者是如何知道这个变化的?我知道如果开发人员第一次从nexus下载了一个jar,并将其存储在
    .m2
    文件夹中,那么他会将这个jar与这个功能一起使用。因此,如果我在中更改功能并重新安装这个jar,开发人员仍然会使用旧的功能,因为他使用的是.m2中的jar,而不是nexus服务器中的jar,因为maven不会更改jar,因为它总是与同一个GAV一起存在!我认为这是maven的策略,我错了?稳定性是这里的关键词。如果有人使用1.0版,他们的构建必须继续工作。也许1.0版有缺陷,但没有理由完全删除它。我假设该项目有文档记录,有一个网站,等等…显示最新的版本st版本,发送邮件,交流。是的,我支持你@Tunaki,我只想促进这项任务,仅此而已,那么解决方案是什么,或者它仍然是旧的方式,通过消息通知他们:(,我认为maven可以做得更好,然后,你向meMa建议什么