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

时间:2010-03-15 18:23:16

标签: java eclipse maven-2

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

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

9 个答案:

答案 0 :(得分:291)

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

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

以下是detailed steps屏幕截图。

答案 1 :(得分:137)

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

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

较新的M2E版本

右键点击Project - >子菜单配置 - >转换为Maven项目

较旧的M2E版本

右键点击Project - >子菜单Maven - >启用依赖关系管理。

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


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

答案 2 :(得分: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插件。

答案 3 :(得分:7)

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

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

答案 4 :(得分: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安装

答案 5 :(得分:4)

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

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

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

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

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

答案 6 :(得分: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

答案 7 :(得分:1)

  

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

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

  

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

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

答案 8 :(得分:1)

转换为Gradle类似于Maven:

右键点击Project - &gt;子菜单配置 - &gt;转换为Gradle(STS)项目