如何正确导入 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 I
m 正在做。选择所有pom导入扫描父文件夹。【参考方案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 > 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 can
t 允许我再创建一个同名项目。
这就是我所说的,因为项目已经存在于工作区中,所以会提示您。尝试创建一个新工作区,然后导入您已签出的项目(可能在其他目录中)
你的意思是从其他分支结帐版本到单独的工作区?
签出到其他本地目录。创建一个新的工作区。将新签出的代码导入新创建的工作区。
嘿,its to simple to ask on ***, so you didn
t 仔细阅读问题。我在初始化问题中写了为什么我不想这样做。我一直在寻找在同一个工作区中获得两个分支的任何方法。以上是关于如何正确导入 Maven 项目到 Eclipse?的主要内容,如果未能解决你的问题,请参考以下文章