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


246

对于正在执行的项目,我们正在考虑使用Eclipse的Maven插件来自动化我们的构建。现在,该过程远比应有的要复杂得多,我们希望Maven可以将其简化为一键式构建。

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


3
您现有的内部版本是否使用Ant脚本?
马特b

4
您可能应该切换接受的答案
Mr_and_Mrs_D 2014年

Answers:


141

如果您只想创建一个默认的POM并启用m2eclipse功能:因此,我假设您当前没有要导入的替代自动构建设置,并且假设您在谈论m2eclipse插件。

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

较新的M2E版本

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

较旧的M2E版本

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

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


要回答“ 是否有自动导入程序或向导?': 从来没听说过。使用上面的选项将使您能够为现有项目启用m2eclipse插件,而无需手动复制。您仍将需要实际设置依赖关系以及您自己需要构建的其他内容。


尽管它启用了M2Eclipse,但它实际上不是向导,它不会导入现有的Eclipse项目。相反,它为用户提供了选择依赖项等的选项,如果用户对Maven的使用经验不足,这可能会很困难。
Kaleb Pederson 2010年

我将这个问题解释为“我需要创建一个新项目并手动复制内容以使用m2eclipse插件吗?”,我将澄清。
brabster 2010年

16
在右键菜单(最新的m2eclipse)中,maven菜单项对我不可用,城东的答案有效。
wulfgarpro

8
在当前版本的Eclipse(4.2)和m2eclipse上,菜单项为“转换/转换为Maven项目”。
杰斯珀

12
@Jesper菜单项是“配置/转换为Maven项目”
angelcervera 2014年

293

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

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

这是截屏的详细步骤


30
这仍然不会创建目录结构,也不会在pom中添加依赖项。
克劳斯·纳吉

2
m2e仍不创建maven目录结构并在pom中添加依赖项吗?
Mr_and_Mrs_D 2014年

2
下面提到的我的解决方案(@ShriKant Vashishtha)解决了此处描述的所有问题。创建Maven结构,删除文件夹名称中的空格,创建pom.xml并移动Maven结构中的源文件夹
ShriKant Vashishtha 2014年

当时在Windows 10 Eclipse Mars上运行完美无瑕。
Matthis Kohli

它对我来说很完美
WitnessTruth

12

我遇到了同样的问题,想将包含大约60个Eclipse项目的整个Eclipse工作区Mavenise。手动执行此操作需要花费大量时间,并且其他选择也不可行。为了解决这个问题,我终于在github上创建了一个名为eclipse-to-maven的项目。由于eclipse没有关于依赖关系的所有必要信息,因此它执行以下操作:

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

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

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

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


有趣!是否已移植到Luna?该项目仍然是一个Eclipse项目(有效.classpath.project文件)吗?您能否在答案中添加如何使用插件来修饰一个简单的JavaSE项目-目录结构的实际变化是什么?
Mr_and_Mrs_D 2014年

抱歉,我不知道Luna是什么。随着项目目录结构的更改,它将不再是有效的Eclipse项目。但是,使用Maven创建修改的Eclipse配置很容易。这不是插件,而是工具。如何运行它已在项目自述文件中提到。目录结构按照Maven约定进行转换。因此,所有资源都去例如src / main / java。
ShriKant Vashishtha 2014年

Luna是Eclipse的最新版本!
Mr_and_Mrs_D 2014年

7

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

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


1
这会创建Maven文件夹结构吗?
Mr_and_Mrs_D 2014年

是的,它将基于适当的映射原型模板和最低配置来创建Maven文件夹结构。您必须一次手动将每个项目依赖项(来自.classpath)添加到POM.xml中。
Pratap Singh,

5

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

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

它不能伪装成最终解决方案(没有办法),因为它应该极大地帮助引导您的Maven转换过程。

此外,仅供参考,以下是一些增强m2e转换过程的想法,将来可能会实现重构以使用Maven布局。

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


4

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

这是我将普通项目转换为Maven项目所做的工作。

常规项目-> java项目,右键单击项目,属性->项目方面,单击“ java”。此步骤会将一般项目转换为Java项目。

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

并等待几秒钟,在加载依赖项时,项目已准备就绪!


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


这看起来是一个非常有吸引力的选择。但是,由于当前已打包,因此它不是很容易访问。尚不清楚如何打包和部署source.code。大多数Java开发人员不是Scala开发人员,SBT也不是社区中广泛使用的工具。
A. Rick

1

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

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

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

我认为那将是最好的选择。创建一个Maven项目,将源,资源,测试,测试资源复制/移动到它们各自的目录中,声明依赖项等。


为什么这个答案比+199答案高?我几乎没看到那个
Evorlor

1

转换为Gradle与Maven类似:

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


4
答案与该问题无关
Ripon Al Wasim

1
我通过寻找Gradle找到了这个问题,很多时候添加其他操作系统(而不是所问操作系统)的答案很有帮助,因为它不存在个案问题。关于Gradle,我不会提出新的问题来回答我认为有帮助的问题,而是发布此问题。感谢和问候。
另一个
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.