将现有Eclipse项目转换为Maven项目

问题描述 投票:236回答:9

对于正在工作的项目,我们正在考虑使用Eclipse的Maven插件来自动化我们的构建。现在这个程序远比它应该复杂得多,我们希望Maven能够简化一键构建。

我的问题是,是否有使用Maven插件将现有Eclipse Java项目转换为Maven项目的向导或自动导入程序?或者我应该创建一个新的Maven项目并手动复制所有源文件,库等。

java eclipse maven-2
9个回答
136
投票

如果你只是想创建一个默认的POM并启用m2eclipse功能:所以我假设你现在没有你想要导入的替代自动构建设置,我假设你在谈论m2eclipse插件。

m2eclipse插件在项目上提供了一个右键单击选项来添加这个默认的pom.xml:

较新的M2E版本

右键单击Project - >子菜单Configure - > Convert to Maven Project

较旧的M2E版本

右键单击Project - > submenu Maven - > Enable Dependency Management。

这样就可以为该项目启用插件。

要回答'是否有自动导入器或向导?':不是我所知道的。使用上面的选项将允许您为现有项目启用m2eclipse插件,避免手动复制。您仍然需要实际设置自己构建所需的依赖项和其他内容。


291
投票

从m2e 0.13.0开始(如果不早于),您可以从上下文菜单中将Java项目转换为Maven项目。方法如下:

  • 右键单击Java项目以弹出上下文菜单
  • 选择配置>转换为Maven项目

这是detailed steps与屏幕截图。


12
投票

我遇到了同样的问题,希望Mavenise整个eclipse工作区包含大约60个Eclipse项目。手动这样做需要很多时间,而备选方案并不可行。为了解决这个问题,我终于在github上创建了一个名为eclipse-to-maven的项目。由于eclipse没有关于依赖项的所有必要信息,因此它执行以下操作:

  • 基于.classpath文件中的<classpathentry/> XML元素,它在另一个项目上创建依赖项,标识库jar文件并根据其名称(例如jakarta-oro-2.0.8.jar)标识其版本。目前artifactIdgroupId是相同的,因为我找不到可以返回基于artifactId依赖的Maven groupId的东西。虽然这不是一个完美的解决方案,但它为加速Mavenisation提供了良好的基础。
  • 它根据Maven惯例移动所有源文件夹(如src/main/java
  • 由于具有空格名称的Eclipse项目很难在Linux / Unix环境中处理,因此它也会使用没有空格的名称重命名它们。
  • 生成的pom.xml文件包含依赖项和基本pom结构。您必须手动添加所需的Maven插件。

7
投票

右键单击项目名称>配置>转换为Maven项目>单击完成。在这里,您将添加一些依赖项以下载并添加您期望的jar文件。

这将创建一个自动生成的pom.xml文件。在eclipse编辑器中以xml格式打开该文件。在构建标记(</build>)之后添加您可以从maven网站复制的依赖项并将其添加到那里。现在你很高兴。这些依赖项将自动添加您所需的jar文件。


5
投票

城东的答案是对的,你应该使用Configure>Convert to Maven Project。但是,我必须添加转换过程已经大大改善,因为m2e 0.13.0:m2e 1.1+和m2e-wtp 0.16.0+现在可以convert the existing eclipse settings into maven plugin configuration

至于依赖转换问题,你可以尝试JBoss Tools(JBT)4.0 Maven集成功能,它包含一个实验转换向导,插入m2e的转换过程:http://docs.jboss.org/tools/whatsnew/maven/maven-news-4.0.0.Beta1.html

它并没有假装是最终的解决方案(没有什么可以),它应该可以极大地帮助引导您的Maven转换过程。

此外,仅供参考,这里是some ideas to enhance m2e's conversion process,重构使用Maven布局将很可能在未来实施。

JBT 4.0(需要Eclipse JavaEE Juno)可以从http://download.jboss.org/jbosstools/updates/stable/juno/或Eclipse Marketplace安装


4
投票

这是必要的,因为或多或少,当我们从git导入项目时,它不是maven项目,因此maven依赖项不在构建路径中。

以下是我将一般项目转变为maven项目所做的工作。

一般项目 - > java项目右键单击项目,属性 - >项目构面,单击“java”。此步骤将把一般项目转换为java项目。

java项目 - > maven项目右键单击项目,配置 - >转换为maven项目此时,maven依赖项lib仍然不在构建路径中。项目属性,构建路径,添加库,添加maven依赖项lib

等待几秒钟,当加载依赖项时,项目就准备好了!


2
投票

有一个命令行程序可以将任何Java项目转换为SBT / Maven项目。

它解析所有jar并尝试根据SHA校验和,类路径或文件名找出正确的版本。然后它尝试编译源,直到找到工作配置。还可以给出每个依赖项配置执行的自定义任务。

UniversalResolver 1.0
Usage: UniversalResolver [options]

  -s <srcpath1>,<srcpath2>... | --srcPaths <srcpath1>,<srcpath2>...
        required src paths to include
  -j <jar1>,<jar2>... | --jars <jar1>,<jar2>...
        required jars/jar paths to include
  -t /path/To/Dir | --testDirectory /path/To/Dir
        required directory where test configurations will be stored
  -a <task1>,<task2>... | --sbt-tasks <task1>,<task2>...
        SBT Tasks to be executed. i.e. compile
  -d /path/To/dependencyFile.json | --dependencyFile /path/To/dependencyFile.json
        optional file where the dependency buffer will be stored
  -l | --search
        load and search dependencies from remote repositories
  -g | --generateConfigurations
        generate dependency configurations
  -c <value> | --findByNameCount <value>
        number of dependencies to resolve by class name per jar

https://bitbucket.org/mnyx/universalresolver


1
投票

我的问题是,是否有使用Maven插件将现有Eclipse Java项目转换为Maven项目的向导或自动导入程序?

据我所知,没有什么可以自动将Eclipse项目转换为Maven项目(即修改布局,创建POM,“生成”并使用元数据提供它,检测库及其版本以将它们添加到POM中等)。 Eclipse只是没有足够的元数据来实现这一点(这正是POM的要点)和/或产生了不错的结果。

或者我应该创建一个新的Maven项目并手动复制所有源文件,库等

在我看来,那将是最好的选择。创建Maven项目,将源,资源,测试,测试资源复制/移动到各自的目录中,声明依赖项等。


1
投票

转换为Gradle类似于Maven:

右键单击Project - >子菜单Configure - > Convert to Gradle(STS)Project

© www.soinside.com 2019 - 2024. All rights reserved.