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

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


当前回答

承东的回答是正确的,你应该使用配置>转换为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项目。但是,我必须补充的是,自从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化包含大约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.

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

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

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

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

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

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

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

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