Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.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

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
具有相互依赖的独立Git回购的多个项目:如何创建本地构建?_Git_Maven_Intellij Idea_Build - Fatal编程技术网

具有相互依赖的独立Git回购的多个项目:如何创建本地构建?

具有相互依赖的独立Git回购的多个项目:如何创建本地构建?,git,maven,intellij-idea,build,Git,Maven,Intellij Idea,Build,我在IntelliJ中有几个项目(Commons、ProjectA、ProjectB),每个项目都位于自己的Git repo中。ProjectA和ProjectB依赖于ProjectCommons。当我在Commons中更改代码时,我必须在GitLab中构建Commons,通过artifactory将新版本加载到Intellij中。否则IntelliJ中的ProjectA和ProjectB将看不到Commons中所做的更改。此外,当在ProjectA或ProjectB中跳入Commons Int

我在IntelliJ中有几个项目(Commons、ProjectA、ProjectB),每个项目都位于自己的Git repo中。ProjectA和ProjectB依赖于ProjectCommons。当我在Commons中更改代码时,我必须在GitLab中构建Commons,通过artifactory将新版本加载到Intellij中。否则IntelliJ中的ProjectA和ProjectB将看不到Commons中所做的更改。此外,当在ProjectA或ProjectB中跳入Commons IntelliJ中定义的代码时,会打开它从Artifactory检索到的Commons jar,并动态地对其进行反编译


问题:我需要做什么,才能在Commons本地构建更改,使它们在ProjectA和ProjectB中可见?当跳转到ProjectA或ProjectB中调用的Commons代码时,我需要做什么才能跳转到Commons的源代码?

您不需要经过GitLab和Artifactory。如果您在本地计算机上使用Maven在版本为x.y.z-SNAPSHOT的情况下构建Commons,并在ProjectA和ProjectB中引用它,它们将通过您计算机上的Maven本地存储库自动获取更改


在Eclipse中,您甚至可以在同一个工作区中打开三个项目,所有更改都将自动解决,而无需运行构建。但我不知道IntelliJ是否提供了类似的服务


对于CrazyCoder的评论:您可以将所有三个项目放在一个多模块项目中,但这不是一个技术决策,而是一个架构决策。如果希望始终使用相同的版本号同时生成这三个项目,请使用multi-module,否则不使用。

使用pom.xml创建父项目,定义这三个项目之间的依赖关系。在IntelliJ IDEA中导入根pom.xml。您的3个项目将成为IntelliJ IDEA中的模块,依赖关系将通过模块源而不是存储库工件来解决。@CrazyCode:谢谢您的评论。随着系统中微服务的改变,我们放弃了使用父POM的方法……问题是maven构建将创建的jar放入项目的目标目录中。但是ProjectA/ProjectB将jar从本地maven repo中选择到dir x.y.z-SNAPSHOT中——“在Eclipse中,您甚至可以在同一个工作区中打开三个项目,所有更改都可以在不运行构建的情况下自动解决。但我不知道IntelliJ是否提供类似的功能。”这就是问题所在:-)。我在寻找IntelliJ,其目的与eclipse中的相同。”…但这不是一项技术决策,而是一项架构决策”。是的,在我的案例中,这是架构师的架构决定……如果您使用Maven运行
clean install
,生成的jar将进入本地存储库
.m2/repository
,并可由同一台计算机上的所有其他项目访问。解决方案是使用文件>项目结构>模块在本地maven存储库中定义jar