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

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

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

如果您只想创建一个默认POM并启用m2eclipse特性:那么我假设您目前没有试图导入的其他自动构建设置,并且我假设您正在谈论m2eclipse插件。

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

更新的M2E版本

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

旧的M2E版本

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

这将为该项目启用插件做必要的工作。


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

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

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

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

在我看来,这是最好的选择。创建一个Maven项目,复制/移动源、资源、测试、测试资源到它们各自的目录,声明依赖项等等。

从m2e 0.13.0开始(如果不是更早的话),您可以从上下文菜单将Java项目转换为Maven项目。以下是如何做到的:

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

下面是带有屏幕截图的详细步骤

我也遇到了同样的问题,想要maven化包含大约60个eclipse项目的整个eclipse工作空间。手动这样做需要大量的时间,替代方案也不那么可行。为了解决这个问题,我最终在github上创建了一个名为eclipse-to-maven的项目。由于eclipse没有关于依赖关系的所有必要信息,它会执行以下操作:

  • 基于.classpath文件中的<classpathentry/> XML元素,它创建了对另一个项目的依赖关系,标识库jar文件,并根据其名称(例如jakarta-oro-2.0.8.jar)标识其版本。目前artifactIdgroupId是相同的,因为我找不到可以返回基于artifactId的依赖项的Maven groupId的东西。虽然这不是一个完美的解决方案,但它为加速maven化提供了一个很好的基础。

  • 它根据Maven约定移动所有源文件夹(比如src/main/java)

  • 由于名称中带有空格的Eclipse项目很难在Linux/Unix环境中处理,因此也可以使用不带空格的名称重命名它们。

  • 生成的pom.xml文件包含依赖项和基本pom结构。您必须手动添加所需的Maven插件。

承东的答案是正确的,你应该使用Configure>Convert to Maven Project。然而,我必须添加的转换过程已经大大改善,因为m2e 0.13.0: m2e 1.1+和m2e-wtp 0.16.0+现在可以将现有的eclipse设置转换为maven插件配置

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

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

另外,供参考,这里是改进m2e转换过程的一些想法,重构使用Maven布局将很可能在未来实现。

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

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

这将创建一个自动生成的pom.xml文件。在eclipse编辑器中以xml格式打开该文件。在build标签(</build>)之后添加你的依赖项,你可以从maven网站复制并添加它们。现在可以开始了。这些依赖项将自动添加您所需的jar文件。

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

以下是我将一个普通项目转变为专业项目所做的工作。

一般项目——>java项目 右键单击项目,属性->项目facet,单击“java”。 这一步将把一个普通项目变成java项目。< / p >

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

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

有一个命令行程序可以将任何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

对于转换到Gradle是类似于Maven:

右键单击项目->子菜单配置->转换为Gradle (STS)项目