我尽力使用 EGit 将多模块 Maven 项目与 GitHub 同步,但我失败了。
项目的结构是这样的:
- parent (pom)
- child 一号( jar )
- 两个 child ( jar )
我试过这个简单的方法:
- 完全空白的 Eclipse JDT 副本和一个空工作区
- 创建一个新的 GitHub 存储库并使用
README.md
文件对其进行初始化 - 将该存储库克隆到 Eclipse
- 创建父 (pom) 项目
- 创建两个子(jar)项目,添加简单的主类,此时一切正常
现在是棘手的部分。我只分享我的父项目吗?还是 child 也一样?好吧,对我来说,只共享 parent 似乎是合乎逻辑的。但是,当我这样做时,我的构建路径变得完全疯狂,Eclipse 无法再找到主类。然后我重新启动 Eclipse。问题依然存在。然后我“断开”项目与存储库的连接,逻辑上 EGit 随机删除了文件系统上的一个子项目,并使 Eclipse 项目完全无法使用(没有类显示,所有结构都消失了)。
我以前遇到过 EGit 随机删除我的一个存储库的事件,那时候它不仅仅是一个测试,这是我对代码库的实际最新更改。
这个插件是完全坏掉了还是我遗漏了什么?
(我按照基本教程进行了所有设置,并正确配置了我的 SSH key 。)
我应该怎么做才能正确地将本地 Maven 多模块项目推送到 GitHub,并能够从无到有地将其克隆到完全不同的 PC 上?
最佳答案
其实100%可以做到!
这里有一个比以前更简单的方法:
- 克隆您的存储库
- 创建新的Maven项目时,不要将其放在默认的Workspace位置,将其放在存储库的*子目录**
- 完成!您可以根据需要创建任意数量的子模块,Eclipse 已自动检测到您的 Git 存储库。
<子> * 当您选择默认位置时,子目录会自动为您创建,并以您的模块命名。选择不同的位置时,它不会自动创建(这有点不一致,但很有意义)。如果您只是选择您的存储库作为您的位置,Eclipse/Maven 将在您的存储库的根目录中生成所有顶级项目文件和目录(pom.xml、.project、src/、.settings...)目录 - 这可能是你想要的,but most likely isn't .
有关为什么它不起作用的更复杂的解释,请继续阅读...
只是有点复杂而且非常不直观。这是它的外观图片:
我采取的步骤(确保备份任何重要内容):
- 在 GitHub 上创建一个新的存储库(使用 README)
- 安装 Eclipse JDT(“Java”下载,预装了 Maven 和 Egit,但它可以在我认为的任何 Eclipse 版本中运行)
- 在 Eclipse 中克隆存储库。此时,没有要导入的项目或任何东西,只有存储库。要克隆,请转到 Window -> Open perspective -> Other -> Git Repository Exploring
- 使用 Maven 在 Eclipse 中创建项目。我首先创建了一个 child 和一个 parent 。 parent 必须有 pom 的包装类型。 child 可以将它作为一个 jar,并且必须是一个 Maven 模块,而不是一个项目(但它本质上是一样的)。此时我在这个子模块中创建了一个简单的主类,并保存了所有内容
- 将您的父项目共享到您之前克隆的存储库(右键单击父项目 -> 团队 -> 共享项目 -> Git -> 选择您的存储库)。现在,事情将开始分崩离析,但这是正常的。等待 Eclipse 完成。发生的事情是 Eclipse 将项目从您之前保存它的地方(对我来说是我的工作区)移动到 git 存储库 - 由于父存储库中有子存储库,因此它也移动了子存储库。但是,它没有相应地更新其定义,因此子项目现在只显示为一个空目录。您现在可以提交
- 删除丢失的子项目(不是父项目!)
- 再次导入项目
关于java - 我应该如何使用 EGit 处理多模块 Maven 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20981445/