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

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


如果您只想创建一个默认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没有关于依赖关系的所有必要信息,它会执行以下操作:

Based on <classpathentry/> XML elements in .classpath file, it creates the dependencies on another project, identifies the library jar file and based on its name (for instance jakarta-oro-2.0.8.jar) identifies its version. Currently artifactId and groupId are same as I couldn't find something which could return me the Maven groupId of the dependency based on artifactId. Though this is not a perfect solution it provides a good ground to speed up Mavenisation. It moves all source folders according to Maven convention (like src/main/java) As Eclipse projects having names with spaces are difficult to deal on Linux/Unix environment, it renames them as well with names without spaces. Resultant pom.xml files contain the dependencies and basic pom structure. You have to add required Maven plugins manually.


承东的回答是正确的,你应该使用配置>转换为Maven项目。但是,我必须补充的是,自从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 Marketplace安装


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

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


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

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

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

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

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


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