2010-03-15 154 views
220

对于正在工作的项目,我们正在考虑使用Eclipse的Maven插件来自动化我们的构建。现在这个过程比它应该更加复杂,我们希望Maven能够将事物简化为一次构建。将现有Eclipse项目转换为Maven项目

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

+3

请问您现有的构建使用一个Ant脚本? –

+4

您应该切换接受的答案 –

回答

120

如果你只是想创建一个默认的POM并启用m2eclipse的特点:所以我假设你目前还没有一个替代自动构建设置你试图导入,我假设你在谈论m2eclipse插件。

m2eclipse插件提供了一个项目,右击选择添加此默认的pom.xml:

较新版本的M2E

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

旧版本M2E

项目上点击右键 - >子菜单中的Maven - >启用依赖管理换货。

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


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

+0

虽然它启用了M2Eclipse,但它并不是一个真正的向导,它不会导入现有的Eclipse项目。相反,它为用户提供了选择依赖关系等的选项,如果用户对Maven没有太多经验,这可能很困难。 –

+0

我将这个问题解释为'我是否需要创建一个新项目并手动复制东西来使用m2eclipse插件?',我会澄清的。 – Brabster

+0

是的,我正在专门研究m2eclipse插件 - 这是Maven网站上建议的插件,看起来像得到了很好的支持。 –

1

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

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

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

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

+0

现在仍然如此? –

+0

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

281

开始从M2E 0.13.0(如果不早于),你可以将一个Java项目从上下文菜单中选择Maven项目。这里是如何:

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

这里是detailed steps的屏幕截图。

+27

这仍然不会创建目录结构并在pom中添加依赖关系。在eclipse中也可以使用Android项目的 –

+2

? – Quasaur

+1

m2e是否仍然不创建maven目录结构并在pom中添加依赖关系? –

10

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

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

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

  • 作为与空间的名称Eclipse项目是很难对付在Linux/Unix环境下,重命名他们也有不带空格的名字。

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

+0

有趣!它被移植到月神?该项目仍然是一个eclipse项目(有效的'.classpath'和'.project'文件)?你可以添加你的答案如何使用你的插件来简化一个简单的JavaSE项目 - 以及目录结构中的实际变化是什么? –

+0

对不起,但我不知道露娜是什么。当项目目录结构发生变化时,它将不再是有效的eclipse项目。不过使用Maven创建修改后的eclipse配置很简单。这不是一个插件,而是一个工具。在项目的README中已经提到了如何运行它。目录结构在Maven约定中被转换。因此,所有的资源都以src/main/java为例。 –

+0

Luna是eclipse的最新版本! –

4

承东的答案是正确的,你应该用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工具(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的朱诺)可以从http://download.jboss.org/jbosstools/updates/stable/juno/或从Eclipse市场

7

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

这将创建一个自动生成的pom.xml文件。在eclipse编辑器中以xml格式打开该文件。构建标签(</build>)后,添加您可以从maven网站复制的依赖关系,并将它们添加到那里。现在你很好走。这些依赖关系会自动添加你需要的jar文件。

+1

这会创建maven文件夹结构吗? –

+0

@Mr_and_Mrs_D:没有 –

4

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

以下是我将一个普通项目转换为maven项目所做的工作。

一般项目 - > java项目 右键单击项目,properties-> project facets,单击“java”。 这一步将把一个普通的项目变成java项目。

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

并等待几秒钟,当加载依赖关系时,项目就绪!

1

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

+0

这看起来像一个非常有吸引力的选择。但是,因为它目前已经打包,所以不太容易访问。如何打包和部署source.code并不明显。大多数Java开发人员不是Scala开发人员,SBT也不是社区中广泛使用的工具。 –

0

用于转换到摇篮是模拟到Maven的:

右键单击项目 - >子菜单配置 - >转换到摇篮(STS)项目

+3

答案与问题无关 –

+0

我通过寻找Gradle找到了这个问题,多次为其他O.S.添加答案很有帮助。而不是被问及的O.S.因为它不存在针对个案的问题。关于Gradle,我不会创建一个新的问题来回答我认为有用的问题,而是我发布这个问题。感谢和问候。 – another

相关问题