【问题标题】:Eclipse + Maven + Git + Multi-Module projects = UnhappinessEclipse + Maven + Git + 多模块项目 = 不开心
【发布时间】:2011-10-20 19:51:30
【问题描述】:

我们有一个使用 Eclipse 和 Maven 的多模块项目。过去我可以让它工作的唯一方法是对项目使用平面布局,其中父模块与其他模块是对等的。这适用于 m2eclipse 和 Subversion。

现在我们想迁移到 Git 和 GitHub。我想将整个项目以及所有模块公开为 GitHub 上的单个项目。问题是 EGit,Eclipse/Git 插件,想要一次管理一个项目,而不是项目组,所以如果你有一个平面布局,你就做不到。

正确的答案是使用标准的 Maven 分层布局并将父模块和所有模块作为一个单元进行管理。但是 Eclipse 不喜欢这样,再多的摆弄也不会让 Eclipse 接受嵌套项目。 m2Eclipse 不支持层次结构:https://issues.sonatype.org/browse/MNGECLIPSE-2291

那你是做什么的?是否从命令行执行 Git 并放弃在 Eclipse 中查看哪些文件已更改的功能?还是放弃 Eclipse?

【问题讨论】:

    标签: eclipse git maven egit multi-module


    【解决方案1】:

    作为单个 git 存储库的标准 Maven 多模块结构在带有 M2e 的 Eclipse Indigo 和该环境中显示的 git 插件中非常适合我。您不能要求 Eclipse 为您进行抓取,但是一旦您从命令行拉出,您就可以使用 Team/Share,说“Git!”一切都很好。

    我想我明白了来源:层次结构是工作空间内的项目的问题,而不是您导入的“现有项目”。

    这是一个典型的工作流程:

    1. 使用 git svn clone 获取一棵树。它是一个库存的、分层的 mvn 多模块树
    2. 在eclipse中,使用import/maven/existing maven project。指向整棵树
    3. 全选
    4. 好的

    它工作正常。嵌套一点也不打扰日食。不知道bz指的是什么问题。

    在使用 m2e 之前,我使用了 maven-eclipse-plugin。它也适用于这些情况,因为它不会为 <packaging>pom</packaging> 聚合项目生成 .project/.classpath,因此从不调用 Eclipse 来实际嵌套任何东西。

    我并不孤单 - 请参阅 cxf.apache.org 中的开发人员设置说明,了解您可以自己尝试的开源示例。

    【讨论】:

    【解决方案2】:

    您是否可以使用旧版本的工具?

    我有一个使用 Eclipse 3.7 (Indigo)、M2Eclipse (1.0) 和 EGit (1.0) 的 Maven 多模块项目。

    在文件系统上,多模块项目有一个父目录。

    在 Eclipse 中,每个模块都有单独的项目。

    M2Eclipse 完美地完成了依赖管理。

    顶层有单个 git 存储库(.git 目录),EGit 可以完美运行。

    【讨论】:

    • +1 因为我使用的是旧版本,升级后一切都变了。
    • “在 Eclipse 中,每个模块都有单独的项目。”对于那些想知道的人,文件系统是一个工作层次结构,但是 m2eclipse 仍然不允许您将父/子模块作为单个项目层次结构来管理。 m2eclipse 的每个模块都必须在 Eclipse 中有一个项目,否则 Eclipse 将找不到类类型或它们之间的关系。
    【解决方案3】:

    您可以将您的模块放在具有分层布局的 Git 中。并由 Maven 构建这些模块。如果这些模块是 Eclipse 识别的项目(无论是 java、c++ 还是 php 项目),它们可以作为工作空间中的平面布局导入到工作空间中。

    -- the root of Git working directory
      -- moudule1
        -- project1(a java project)
          -- .project(a project file recognized by eclipse JDT)
          -- pom.xml
        -- project2(a java project)
          -- .project
          -- pom.xml
      -- module2
        -- projectA(a java project)
          -- .project(a project file recognized by eclipse JDT)
          -- pom.xml
        -- projectB(a c++ project)
          -- .project(a project file recognized by CDT)
          -- pom.xml 
    

    【讨论】:

    • 怎么样?如果它们以分层方式物理排列在磁盘上,您如何将它们平面导入?
    • Workspace 不关心项目的位置(可以在工作空间下或磁盘上的任何位置)。每个项目的根文件夹下只有一个 .project 文件,Eclipse 可以将其导入到工作区中,而无需将其复制到工作区中。请参阅我的更新答案。
    【解决方案4】:

    对于 Maven 项目,可以通过 Maven 导入向导(可从 Git 访问)一次实现多个导入。 如果您不知道要导入什么样的项目,您可以使用新的 Easymport,通过从各种文件中推断配置,“尽可能”导入项目。见https://github.com/jbosstools/jbosstools-playground#easymport-easy-and-smart-openimport-of-a-project

    获得所有这些项目后,您可以使用 Nestor 插件,该插件将以嵌套/分层布局显示项目,更正确地映射您的 Maven 项目:https://github.com/jbosstools/jbosstools-playground#nestor-view-nested-projects

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-15
      • 2011-05-16
      • 2011-05-02
      • 2018-02-11
      • 1970-01-01
      • 2011-10-07
      • 2011-03-02
      • 2011-03-13
      相关资源
      最近更新 更多