将现有的Eclipse项目转换为Maven项目
对于正在工作的项目,我们正在考虑使用Eclipse的Maven插件来自动化构build。 现在这个过程比我们想象的要复杂得多,我们希望Maven能够将事情简单化为一键式构build。
我的问题是,是否有一个向导或自动导入器用于将现有Eclipse Java项目转换为Maven项目,使用Maven插件? 或者,我应该创build一个新的Maven项目,并手动复制所有源文件,库等
如果你只是想创build一个默认的POM并启用m2eclipsefunction:所以我假设你目前没有一个你想要导入的自动构build设置,我假设你正在谈论m2eclipse插件。
m2eclipse插件在项目上提供了一个右键单击选项来添加这个默认的pom.xml:
较新的M2E版本
右键点击Project – > submenu Configure – > Convert to Maven Project
较老的M2E版本
右键单击项目 – >子菜单Maven – >启用依赖pipe理。
这将做必要的启用该项目的插件。
回答“ 有没有一个自动import商或向导? ': 从来没听说过。 使用上面的选项将允许您为现有项目启用m2eclipse插件,避免手动复制。 您仍然需要实际设置您需要构build自己的依赖项和其他内容。
从m2e 0.13.0开始(如果不早于),可以从上下文菜单中将Java项目转换为Maven项目。 这里是如何:
- 右键单击Java项目,popup上下文菜单
- selectconfiguration>转换为Maven项目
这里是屏幕截图的详细步骤 。
我遇到了同样的问题,并希望Mavenise包含大约60个Eclipse项目的整个Eclipse工作区。 这样做手动需要很多时间和替代选项是不可行的。 为了解决这个问题,我最终在github上创build了一个名为eclipse-to-maven的项目。 由于eclipse没有关于依赖关系的所有必要信息,所以它做了以下工作:
-
基于.classpath文件中的
<classpathentry/>
XML元素,它创build了另一个项目的依赖关系,标识库jar文件并基于其名称(例如jakarta-oro-2.0.8.jar)标识其版本。 目前artifactId
和groupId
是相同的,因为我找不到可以返回基于artifactId
的依赖项的Maven groupId的artifactId
。 虽然这不是一个完美的解决scheme,但它为加速Mavenisation提供了一个很好的基础。 -
它根据Maven约定移动所有源文件夹(如
src/main/java
) -
由于具有空格名称的Eclipse项目在Linux / Unix环境下很难处理,所以它们也可以用无空格的名称进行重命名。
-
生成的pom.xml文件包含依赖关系和基本的pom结构。 您必须手动添加必需的Maven插件。
右键点击Project name> Configure> Convert to Maven Project>点击完成。 在这里,您将添加一些依赖关系来下载并添加预期的jar文件。
这将创build一个自动生成的pom.xml文件。 在eclipse编辑器中以xml格式打开该文件。 构build标签( </build>
)之后,添加您可以从maven网站复制的依赖关系,并将它们添加到那里。 现在你很好走。 这些依赖关系会自动添加你需要的jar文件。
Chengdong的答案是正确的,你应该使用Configure>Convert to Maven Project
。 但是,我必须添加转换过程已经大大改善,因为m2e 0.13.0:m2e 1.1+和m2e-wtp 0.16.0+现在可以将现有的eclipse设置转换成maven插件configuration 。
至于依赖转换问题,您可以尝试JBoss工具(JBT)4.0 Maven集成function,它包含一个插入到m2e转换过程中的实验转换向导: http : //docs.jboss.org/tools/whatsnew/maven/ maven-news-4.0.0.Beta1.html 。
它不会假装是最终的解决scheme(没有什么可以),它应该大大帮助引导你的Maven转换过程。
另外,仅供参考,这里有一些想法来提高m2e的转换过程 ,重构使用Maven布局很可能将来会实现。
JBT 4.0(需要Eclipse JavaEE Juno)可以从http://download.jboss.org/jbosstools/updates/stable/juno/或从Eclipse Marketplace
这是必要的,因为或多或less,当我们从git导入一个项目时,这不是一个maven项目,所以maven依赖不在构buildpath中。
以下是我将一个普通项目转换为Maven项目所做的工作。
一般项目 – > java项目右键单击项目,properties-> project facets,点击“java”。 这一步将把一个普通的项目变成java项目。
java项目 – > maven项目右键单击项目,configuration – >转换为maven项目此时,maven依赖项库仍然不在构buildpath。 项目属性,构buildpath,添加库,添加Maven依赖项库
等待几秒钟,当依赖被加载时,项目就准备好了!
我的问题是,是否有一个向导或自动导入器用于将现有Eclipse Java项目转换为Maven项目,使用Maven插件?
据我所知,没有什么能自动将Eclipse项目转换成Maven项目(即修改布局,创buildPOM,“生成”并为其提供元数据,检测库及其版本以将其添加到POM中等等)。 Eclipse只是没有足够的元数据来实现这一点(这正是POM的要点)和/或产生一个体面的结果。
或者我应该创build一个新的Maven项目,并手动复制所有源文件,库文件等
这在我看来是最好的select。 创build一个Maven项目,复制/移动源代码,资源,testing,testing资源到各自的目录, 声明依赖关系等。
有一个命令行程序将任何Java项目转换成SBT / Maven项目。
它解决了所有的jar,并试图根据SHA校验和,类path或文件名找出正确的版本。 然后,它会尝试编译源代码,直到find工作configuration。 自定义任务执行每依赖configuration也可以给。
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. ie 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
转换为Gradle与Maven是类似的:
右键单击项目 – >子菜单configuration – >转换为Gradle(STS)项目