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

我的问题是,是否存在使用Maven插件将现有Eclipse Java项目转换为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

其他回答

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

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

从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.

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

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

据我所知,没有任何东西可以自动地将Eclipse项目转换为Maven项目(即修改布局、创建POM、“生成”并向其提供元数据、检测库及其版本以将它们添加到POM中,等等)。Eclipse没有足够的元数据来实现这一点(这正是POM的意义所在)和/或产生一个不错的结果。

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

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