ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

您现有的构建是否使用 Ant 脚本?
您可能应该切换接受的答案

R
Ripon Al Wasim

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

右键单击 Java 项目以弹出上下文菜单

选择配置 > 转换为 Maven 项目

这是带有屏幕截图的 detailed steps


这仍然不会创建目录结构并在 pom.xml 中添加依赖项。
m2e 仍然没有创建 maven 目录结构并在 pom 中添加依赖项吗?
下面提到的我的解决方案(@ShriKant Vashishtha)解决了这里描述的所有问题。创建 Maven 结构,删除文件夹名称中的空格,创建 pom.xml 并在 Maven 结构中移动源文件夹
当时在 Windows 10 Eclipse Mars 上完美无瑕。
它对我来说很完美
B
BeeOnRope

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

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

较新的 M2E 版本

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

较旧的 M2E 版本

右键单击项目 -> 子菜单 Maven -> 启用依赖管理。

这将做为该项目启用插件所必需的。

回答“是否有自动导入器或向导?”:我不知道。使用上面的选项将允许您为现有项目启用 m2eclipse 插件,从而避免手动复制。您仍然需要实际设置依赖项和其他您需要自己构建的东西。


虽然它启用了 M2Eclipse,但它并不是真正的向导,它不会导入现有的 Eclipse 项目。相反,它为用户提供了选择依赖项等的选项,如果用户对 Maven 没有太多经验,这可能会很困难。
我将问题解释为“我是否需要创建一个新项目并手动复制内容以使用 m2eclipse 插件?”,我会澄清一下。
右键菜单(最新的m2eclipse)中的maven菜单项对我不可用,城东的回答有效。
在当前版本的 Eclipse (4.2) 和 m2eclipse 上,菜单项是 Convert / Convert to Maven Project。
@Jesper 菜单项是“配置/转换为 Maven 项目”
S
ShriKant Vashishtha

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

基于 .classpath 文件中的 XML 元素,它创建对另一个项目的依赖关系,识别库 jar 文件并根据其名称(例如 jakarta-oro-2.0.8.jar)识别其版本。目前 artifactId 和 groupId 相同,因为我找不到可以根据 artifactId 返回依赖项的 Maven groupId 的东西。虽然这不是一个完美的解决方案,但它为加速 Mavenisation 提供了良好的基础。

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

由于带有空格的 Eclipse 项目很难在 Linux/Unix 环境中处理,因此它也将它们重命名为不带空格的名称。

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


有趣的 !移植到 Luna 了吗?该项目是否仍是 Eclipse 项目(有效的 .classpath.project 文件)?您能否在答案中添加如何使用您的插件来 mavenize 一个简单的 JavaSE 项目 - 目录结构的实际变化是什么?
抱歉,我不知道 Luna 是什么。随着项目目录结构的更改,它将不再是有效的 Eclipse 项目。然而,使用 Maven 创建修改后的 eclipse 配置很容易。这不是一个插件,而是一个工具。如何运行它已经在项目的 README 中提到。目录结构按照 Maven 约定进行转换。所以所有的资源都去 src/main/java 例如。
Luna是最新版本的eclipse!!
M
Mr_and_Mrs_D

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

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


这会创建 Maven 文件夹结构吗?
是的,它将根据适当的映射原型模板和最小配置创建 maven 文件夹结构。您必须一次手动地将每个项目依赖项(来自 .classpath)添加到 POM.xml 中。
F
Fred Bricon

城东的答案是正确的,你应该使用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 Tools (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 Juno)可以从 http://download.jboss.org/jbosstools/updates/stable/juno/ 或 Eclipse Marketplace 安装


m
moonshang

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

这是我将一般项目转变为 maven 项目所做的工作。

一般项目-->java项目右键项目,属性->项目方面,点击“java”。这一步会将一般项目变成java项目。

java project --> maven project 右键project,configure-->convert to maven project 此时maven依赖lib还没有在构建路径中。项目属性,构建路径,添加库,添加maven依赖库

并等待几秒钟,当依赖项加载完毕后,项目就准备好了!


A
Alex

有一个命令行程序可以将任何 Java 项目转换为 SBT/Maven 项目。

它解析所有 jars 并尝试根据 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 也不是社区内广泛使用的工具。
C
Community

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

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

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

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


为什么这个答案高于 +199 答案?我差点没看到那个
a
another

转换为 Gradle 类似于 Maven:

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


答案与问题无关
我通过寻找 Gradle 发现了这个问题,很多时候添加其他操作系统的答案而不是询问的操作系统是有帮助的,因为它不存在针对个别情况的问题。关于 Gradle,我不会创建一个新问题来回答我认为有帮助的问题,而是发布这个。感谢和问候。