java - 我应该如何使用 EGit 处理多模块 Maven 项目?

标签 java eclipse git maven egit

我尽力使用 EGit 将多模块 Maven 项目与 GitHub 同步,但我失败了。

项目的结构是这样的:

  • parent (pom)
  • child 一号( jar )
  • 两个 child ( jar )

我试过这个简单的方法:

  1. 完全空白的 Eclipse JDT 副本和一个空工作区
  2. 创建一个新的 GitHub 存储库并使用 README.md 文件对其进行初始化
  3. 将该存储库克隆到 Eclipse
  4. 创建父 (pom) 项目
  5. 创建两个子(jar)项目,添加简单的主类,此时一切正常

现在是棘手的部分。我只分享我的父项目吗?还是 child 也一样?好吧,对我来说,只共享 parent 似乎是合乎逻辑的。但是,当我这样做时,我的构建路径变得完全疯狂,Eclipse 无法再找到主类。然后我重新启动 Eclipse。问题依然存在。然后我“断开”项目与存储库的连接,逻辑上 EGit 随机删除了文件系统上的一个子项目,并使 Eclipse 项目完全无法使用(没有类显示,所有结构都消失了)。

我以前遇到过 EGit 随机删除我的一个存储库的事件,那时候它不仅仅是一个测试,这是我对代码库的实际最新更改。

这个插件是完全坏掉了还是我遗漏了什么?

(我按照基本教程进行了所有设置,并正确配置了我的 SSH key 。)

我应该怎么做才能正确地将本地 Maven 多模块项目推送到 GitHub,并能够从无到有地将其克隆到完全不同的 PC 上?

最佳答案

其实100%可以做到!

这里有一个比以前更简单的方法:

  1. 克隆您的存储库
  2. 创建新的Maven项目时,不要将其放在默认的Workspace位置,将其放在存储库的*子目录**
  3. 完成!您可以根据需要创建任意数量的子模块,Eclipse 已自动检测到您的 Git 存储库。

<子> * 当您选择默认位置时,子目录会自动为您创建,并以您的模块命名。选择不同的位置时,它不会自动创建(这有点不一致,但很有意义)。如果您只是选择您的存储库作为您的位置,Eclipse/Maven 将在您的存储库的根目录中生成所有顶级项目文件和目录(pom.xml、.project、src/、.settings...)目录 - 这可能是你想要的,but most likely isn't .


有关为什么它不起作用的更复杂的解释,请继续阅读...


只是有点复杂而且非常不直观。这是它的外观图片:

multi-module Maven project with a complex hierarchy in Eclipse using Egit and GitHub

我采取的步骤(确保备份任何重要内容):

  1. 在 GitHub 上创建一个新的存储库(使用 README)
  2. 安装 Eclipse JDT(“Java”下载,预装了 Maven 和 Egit,但它可以在我认为的任何 Eclipse 版本中运行)
  3. 在 Eclipse 中克隆存储库。此时,没有要导入的项目或任何东西,只有存储库。要克隆,请转到 Window -> Open perspective -> Other -> Git Repository Exploring
  4. 使用 Maven 在 Eclipse 中创建项目。我首先创建了一个 child 和一个 parent 。 parent 必须有 pom 的包装类型。 child 可以将它作为一个 jar,并且必须是一个 Maven 模块,而不是一个项目(但它本质上是一样的)。此时我在这个子模块中创建了一个简单的主类,并保存了所有内容
  5. 将您的父项目共享到您之前克隆的存储库(右键单击父项目 -> 团队 -> 共享项目 -> Git -> 选择您的存储库)。现在,事情将开始分崩离析,但这是正常的。等待 Eclipse 完成。发生的事情是 Eclipse 将项目从您之前保存它的地方(对我来说是我的工作区)移动到 git 存储库 - 由于父存储库中有子存储库,因此它也移动了子存储库。但是,它没有相应地更新其定义,因此子项目现在只显示为一个空目录。您现在可以提交
  6. 删除丢失的子项目(不是父项目!)
  7. 再次导入项目

关于java - 我应该如何使用 EGit 处理多模块 Maven 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20981445/

相关文章:

java - 服务器启动期间在 Tomcat、Spring、Maven 和 Eclipse 上使用 wicket 的 ClassNotFoundException

java - hadoop 运行应用程序-错误 security.UserGroupInformation : PriviledgedActionException

git svn rebase 索引文件打开失败 : Invalid argument

java - 构建条件 API 查询以避免 MultipleBagFetchException

java - 使用 while 和 for 循环时如何访问和操作字符串数组中的各个值

java - 向 Eclipse 表添加删除图标列

android - 无法连接到相机错误,但在我导出到 apk 时有效

java - appium webdriver 在真实 IOS 设备上未检测到 Webview

带有通配符扩展的 Git 命令

git - Phabricator 第一次 'arc land' 失败