Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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_Maven_Versioning - Fatal编程技术网

Java 如何解决maven依赖混乱,正确进行版本控制?

Java 如何解决maven依赖混乱,正确进行版本控制?,java,maven,versioning,Java,Maven,Versioning,我遇到的情况是,我负责一个遗留的JavaMaven项目,并且在版本控制和依赖性方面面临一些问题 该项目由一些子应用程序组成,这些子应用程序包括一些模块+所有应用程序(或其模块)也依赖于类似于commons模块的东西(或者更好地依赖于该commons模块的一些子模块) 现在我面临着问题: 1) 看到依赖项并更改模块的版本会让我陷入一片混乱,因为我不知道模块在哪里使用,所以我必须搜索它的用法并手动更新版本。 是否有更好的方法或其他方法可用于此依赖项/版本mash-可能是工具支持(目前使用Intell

我遇到的情况是,我负责一个遗留的JavaMaven项目,并且在版本控制和依赖性方面面临一些问题

该项目由一些子应用程序组成,这些子应用程序包括一些模块+所有应用程序(或其模块)也依赖于类似于commons模块的东西(或者更好地依赖于该commons模块的一些子模块)

现在我面临着问题:
1) 看到依赖项并更改模块的版本会让我陷入一片混乱,因为我不知道模块在哪里使用,所以我必须搜索它的用法并手动更新版本。
是否有更好的方法或其他方法可用于此依赖项/版本mash-可能是工具支持(目前使用IntelliJ Idea)

2) 我正在努力为不同分支中的模块/应用程序制定清晰的版本控制方法。
很明显,对于正常的发布/维护漏洞(如语义版本控制,例如次要版本增加且该分支稳定,没有其他分支使用相同的次要版本),这将是最好的。 但是,如果我必须为同一个次要版本为另一个客户提供一个分支,并且它必须处于不同的早午餐中(在过去,对管理层来说,通用产品开发似乎是未知的),那么该怎么办呢?是否有其他不应该在其他分支中使用的功能(甚至没有禁用,法规不允许在代码中使用)。
如何区分这些分支?我应该为分支使用其中一个版本数字,还是应该在最后一个数字附加一些字符(例如:项目的缩写)?
A) 1.5.3.2(
B) 1.0.3.2-US vs 1.0.3.2-EU
(是的,我知道具有类似功能切换的产品是最好的解决方案,但这不是一个选项(由于管理和法规义务))
问题还在于是否有工具支持所选择的方式。

对于1):是的,它是。您可以在父pom中使用并将版本设置为变量。更新模块版本时,只需更新父pom就足够了

对于2):您可以使用为客户设置不同的版本。如果使用git分支,则需要在有新提交时更新所有分支。为不同的客户使用不同的修复程序也很方便

或者你也可以通过maven来解决它。使用不同的包命令,如

mvn package -PEU

问题是为什么你们有不同的客户分支机构?代码不同吗?如果是的话,你必须有一个不同的版本…毫无疑问…否则这将是地狱…你将失败。。