如何正确导入 Maven 项目到 Eclipse?

Posted

技术标签:

【中文标题】如何正确导入 Maven 项目到 Eclipse?【英文标题】:How properly import maven projects to eclipse? 【发布时间】:2013-06-03 15:44:25 【问题描述】:

我有一个复杂的 Maven 项目,它有一个父文件夹,父文件夹 pom.xml 和一些子项目的子文件夹,每个子文件夹都有自己的 pom.xml

当我从 SVN 存储库“作为 maven 项目”签出父文件夹时,它正确地显示在工作区中,每个项目都作为单独的项目。

但现在我从项目的其他分支签出父文件夹。我想以相同的方式将此父文件夹添加到当前工作区。所以我只选择Import > Maven project,得到与从svn到期结帐相同的对话框,Eclipse找到所有具有适当层次结构的pom文件并要求我为父项目提供其他名称,因为相同的名称已经存在(项目的trunc版本),我给它另一个名字。但是在导入之后,我在eclipse中只得到了父文件夹作为maven项目,所有其他子项目都简单地位于父项目下作为它的子文件夹。

那么,我怎样才能导入这样的项目属性呢?我只想将所有子项目也创建为 maven 项目。

【问题讨论】:

我只在新工作区管理了添加此类项目的新分支,所有其他方式都不适合我。 我不再试图在这场战斗中获胜,开始为每个分支使用单独的工作区。 【参考方案1】:

对于从 SCM(无论是 SVN、Git 或任何其他 SCM)导入复杂(或实际上任何)Maven 项目,我使用以下方法:

文件->导入->从 SCM 签出 Maven 项目

如果没有 IDE 特定文件已提交到 SCM,则此方法效果最佳。它将导入所有嵌套项目,或者您可以选择要导入的项目。它完全依赖于 Maven 设置来确定正在创建的项目的性质,因此,假设 POM 文件是正确的,您最终会得到正确配置的所有内容。

您可能需要安装附加组件,以便 m2eclipse 可以访问您选择的 SCM。

【讨论】:

我刚刚写了我需要导入已经存在的项目,而不是从 svn 中签出。从 svn 不同的分支会自动在工作区文件夹中的硬盘驱动器上创建一些混乱(另一个子文件夹中的一个分支)。所以我只是在它自己的文件夹中检出每个分支并将其导入到 eclipse 中。 这个函数可以很容易地从分支中检出。这是我能够将嵌套的 Maven 项目导入 Eclipse 同时保持与 SCM 的联系的唯一方法。【参考方案2】:

删除您作为 Maven 项目签出的项目,然后简单地签出父项目(不是作为 Maven 项目),然后将子模块导入为现有 Maven 项目。确保它们在父 POM 中列为子模块。

【讨论】:

将所有子模块一个一个导入不是很好的解决方案。大约有30个模块。导入父项目时,如果导入应该在自动模式下进行,为什么还要手动进行/ 导入子模块是指在“导入现有 Maven 项目”对话框中,浏览父项目的目录,然后选择要导入的所有 POM。 s exatcly how Im 正在做。选择所有po​​m导入扫描父文件夹。【参考方案3】:

Eclipse 不允许多次导入一个项目,在您的情况下是从主干和分支导入。 This article 展示了如何使用自定义 maven 配置文件绕过此限制。基本上,步骤是:

    将以下个人资料添加到您的父母pom.xml

    <profiles>
      <!-- Specific profile used to append a string to project name -->
      <profile>
        <id>append-to-project-name</id>
        <activation>
          <property>
            <name>append.to.project.name</name>
          </property>
        </activation>
        <build>
           <plugins>
            <plugin>
              <artifactId>maven-eclipse-plugin</artifactId>
              <configuration>
                <projectNameTemplate>
                  [artifactId]-$append.to.project.name
                </projectNameTemplate>
              </configuration>
            </plugin>
          </plugins>
        </build>
      </profile>
    </profiles>
    

    在将项目导入Eclipse之前,让maven生成项目设置:

    mvn eclipse:eclipse -Dappend.to.project.name=[your-branch-name]

    将项目作为现有项目(不是 maven 项目)导入 Eclipse。

这应该可以解决命名问题。


至于子项目的导入:我还有一个带有子子项目的父 maven 项目,并为 Ecplise 使用 m2e 插件。当我选择Import &gt; Existing Maven Project 时,我可以同时检查父母和孩子。导入后,我将父项目和每个子项目都独立导入。屏幕:

所以我希望结合上面的命名解决方案可以解决您的问题。

【讨论】:

关于导入子项目。正如您在结帐时描述为 Maven 项目一样,它可以完美地工作,但是在 eclipse 中使用相同的对话框窗口导入现有项目时,它无法正常工作。 感谢您 - 继续:这会将文件复制到工作区还是将它们留在导入时指向的位置? 我的猜测是默认情况下它不会复制文件(在我的情况下没有)。不过,无法验证,我已经切换到 IntelliJ Idea :)【参考方案4】:

我想可能存在一些工作空间问题。您可能已经在工作区本身中签出了项目(不确定,请原谅)。 您可以做的是,尝试在其他驱动器中检出您的项目,然后导入父项目。您将再次看到所有 POM 以分层方式对齐,然后我想,您不会被要求输入父项目的名称,这样就可以解决问题。

【讨论】:

不,我m entering the project name due to the project with the same name is already in workspace. So changing location of folder cant 允许我再创建一个同名项目。 这就是我所说的,因为项目已经存在于工作区中,所以会提示您。尝试创建一个新工作区,然后导入您已签出的项目(可能在其他目录中) 你的意思是从其他分支结帐版本到单独的工作区? 签出到其他本地目录。创建一个新的工作区。将新签出的代码导入新创建的工作区。 嘿,its to simple to ask on ***, so you didnt 仔细阅读问题。我在初始化问题中写了为什么我不想这样做。我一直在寻找在同一个工作区中获得两个分支的任何方法。

以上是关于如何正确导入 Maven 项目到 Eclipse?的主要内容,如果未能解决你的问题,请参考以下文章

eclipse导入maven项目,资源文件位置显示不正确

如何把工程导入到eclipse?

从 Git 将 Maven 项目导入 Eclipse

Eclipse如何导入maven项目,以及配置maven

Maven如何将别人的项目导入到自己的eclipse并使用

将maven项目导入到eclipse中