对于正在执行的项目,我们正在考虑使用Eclipse的Maven插件来自动化我们的构建。现在,该过程远比应有的要复杂得多,我们希望Maven可以将其简化为一键式构建。
我的问题是,是否存在使用Maven插件将现有的Eclipse Java项目转换为Maven项目的向导或自动导入器?或者我应该创建一个新的Maven项目并手动复制所有源文件,库等。
对于正在执行的项目,我们正在考虑使用Eclipse的Maven插件来自动化我们的构建。现在,该过程远比应有的要复杂得多,我们希望Maven可以将其简化为一键式构建。
我的问题是,是否存在使用Maven插件将现有的Eclipse Java项目转换为Maven项目的向导或自动导入器?或者我应该创建一个新的Maven项目并手动复制所有源文件,库等。
Answers:
如果您只想创建一个默认的POM并启用m2eclipse功能:因此,我假设您当前没有要导入的替代自动构建设置,并且假设您在谈论m2eclipse插件。
m2eclipse插件在项目上提供了一个右键单击选项,以添加此默认pom.xml:
较新的M2E版本
右键单击项目->子菜单配置->转换为Maven项目
较旧的M2E版本
右键单击Project-> Maven子菜单-> Enable Dependency Management。
这将为启用该项目的插件做必要的工作。
要回答“ 是否有自动导入程序或向导?': 从来没听说过。使用上面的选项将使您能够为现有项目启用m2eclipse插件,而无需手动复制。您仍将需要实际设置依赖关系以及您自己需要构建的其他内容。
我遇到了同样的问题,想将包含大约60个Eclipse项目的整个Eclipse工作区Mavenise。手动执行此操作需要花费大量时间,并且其他选择也不可行。为了解决这个问题,我终于在github上创建了一个名为eclipse-to-maven的项目。由于eclipse没有关于依赖关系的所有必要信息,因此它执行以下操作:
基于<classpathentry/>
.classpath文件中的XML元素,它创建对另一个项目的依赖关系,标识库jar文件,并基于其名称(例如jakarta-oro-2.0.8.jar)标识其版本。当前artifactId
和groupId
与无法找到可以使我返回基于的依赖项的Maven groupId相同的东西相同artifactId
。尽管这不是一个完美的解决方案,但它为加速Mavenisation提供了良好的基础。
它将根据Maven约定移动所有源文件夹(如src/main/java
)
由于在Linux / Unix环境中很难处理带有空格的名称的Eclipse项目,因此它也使用不带空格的名称对其进行重命名。
结果pom.xml文件包含依赖项和基本pom结构。您必须手动添加所需的Maven插件。
.classpath
和.project
文件)吗?您能否在答案中添加如何使用插件来修饰一个简单的JavaSE项目-目录结构的实际变化是什么?
右键单击项目名称>配置>转换为Maven项目>单击完成。在这里,您将添加一些依赖项以下载并添加所需的jar文件。
这将创建一个自动生成的pom.xml文件。在Eclipse编辑器中以xml格式打开该文件。在构建标记(</build>
)之后,添加您可以从maven网站复制并在其中添加它们的依赖项。现在你很好。这些依赖项将自动添加所需的jar文件。
城东的答案是正确的,应该使用Configure>Convert to Maven Project
。但是,我必须添加,由于m2e 0.13.0:m2e 1.1+和m2e-wtp 0.16.0+现在可以将现有的eclipse设置转换为maven插件配置,因此转换过程已得到了极大的改善。
至于依赖项转换问题,您可以尝试JBoss工具(JBT)4.0 Maven集成功能,该功能包含一个实验性转换向导,已插入m2e的转换过程中:http : //docs.jboss.org/tools/whatsnew/maven/ maven-news-4.0.0.Beta1.html。
它不能伪装成最终解决方案(没有办法),因为它应该极大地帮助引导您的Maven转换过程。
此外,仅供参考,以下是一些增强m2e转换过程的想法,将来可能会实现重构以使用Maven布局。
可以从http://download.jboss.org/jbosstools/updates/stable/juno/或从Eclipse Marketplace 安装JBT 4.0(需要Eclipse JavaEE Juno)
有一个命令行程序可将任何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
我的问题是,是否存在使用Maven插件将现有的Eclipse Java项目转换为Maven项目的向导或自动导入器?
据我所知,没有什么可以自动将Eclipse项目转换为Maven项目(即修改布局,创建POM,“生成”并向其提供元数据,检测库及其版本以将其添加到POM中)。等)。Eclipse只是没有足够的元数据来做到这一点(这正是POM的重点)和/或产生不错的结果。
还是我应该创建一个新的Maven项目并手动复制所有源文件,库等
我认为那将是最好的选择。创建一个Maven项目,将源,资源,测试,测试资源复制/移动到它们各自的目录中,声明依赖项等。
转换为Gradle与Maven类似:
右键单击项目->子菜单配置->转换为Gradle(STS)项目