如何在Git for Eclipse中组织分层的模块化Java项目?

时间:2019-02-11 19:43:46

标签: java eclipse git

我使用git子树和子模块已经有一段时间了,但是没有达到预期的结果。但是,让我们解释一下项目布局。首先,它是模块化Java项目。它由14个模块组成。 (为简单起见,我们称它们为MA,MB,MC等)。由于Eclipse目前每个项目只能处理一个模块,因此每个模块都是一个单独的项目。复杂的部分从这里开始:某些模块相互依赖。所以说MA不依赖任何东西,MB依赖MA,MC也依赖MA,MD依赖MB,ME依赖MC和MD。 (还有其他模块和依赖项,但是足以解决这种情况)。为了说明这一点,请看下面:

MA -x
MB -> MA
MC -> MA
MD -> MB
ME -> MC, MD

超级项目实际上是某种启动程序,它包含所有Mx模块,从技术上讲,它也是Java模块(我们称之为MF)。在Eclipse的工作区中,所有这些MA-MF模块都作为单独的项目(在Project Explorer中显示为同级项目)设置(通过Eclipse Java Build Path)以相互依赖。所以它看起来或多或少像:

Workspace:
+-- MA/
    +-- ...
+-- MB/
    +-- ...
...
+-- MF/
    +-- ...

我不愿意为该项目创建Git存储库,因为我不确定该项目的最终布局是什么,但是自从我解决之后,我想将所有这些模块添加到VCS中(即Git)。但是我想将每个Java模块都维护为实际上独立的存储库。但是我想自己签出MB或MC并能够继续处理(请记住,这些依赖于MA,也应该以某种方式签出)。我想自行检查MD或ME并进行处理。但是请注意,这些依赖于其他模块。 MF(或其他未提及的模块)也是如此。我真的很希望能够在FS层次结构的同一级别上将它们检出,以满足Eclipse的要求。 Eclipse当然可以处理嵌套的项目,并以兄弟姐妹的形式在平面图中显示它们,但是请注意MB和MC的情况,它们都依赖于MA ---我真的很想在两者之间共享工作树(如Git所称)这两个模块(并且不要在MB和MC下具有MA的两个单独的git实例)。

就像我在一开始提到的那样,我玩了一段时间git子模块和子树,但是我无法实现自己的目标。

我不介意项目设置是否真的很复杂,如果要做一次。我不介意在执行过程中提交和推送(和分支)是否需要稍微复杂的处理并引起注意。 (我不必使用Eclipse Git插件,通过bash发出命令就可以了。)

或者,我很高兴听到您如何处理git中模块之间具有多个依赖级别的模块化Java项目(以及如何使用Eclipse来管理它)。

0 个答案:

没有答案