对于工作中的项目,我们正在考虑使用Eclipse的Maven插件来自动化我们的构建。现在,这个过程比它应该做的要复杂得多,我们希望Maven能将事情简化为一键构建。
我的问题是,是否存在使用Maven插件将现有Eclipse Java项目转换为Maven项目的向导或自动导入器? 或者我应该创建一个新的Maven项目并手动复制所有源文件、库等等。
对于工作中的项目,我们正在考虑使用Eclipse的Maven插件来自动化我们的构建。现在,这个过程比它应该做的要复杂得多,我们希望Maven能将事情简化为一键构建。
我的问题是,是否存在使用Maven插件将现有Eclipse Java项目转换为Maven项目的向导或自动导入器? 或者我应该创建一个新的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.
其他回答
我的问题是,是否存在使用Maven插件将现有Eclipse Java项目转换为Maven项目的向导或自动导入器?
据我所知,没有任何东西可以自动地将Eclipse项目转换为Maven项目(即修改布局、创建POM、“生成”并向其提供元数据、检测库及其版本以将它们添加到POM中,等等)。Eclipse没有足够的元数据来实现这一点(这正是POM的意义所在)和/或产生一个不错的结果。
或者我应该创建一个新的Maven项目并手动复制所有源文件、库等等
在我看来,这是最好的选择。创建一个Maven项目,复制/移动源、资源、测试、测试资源到它们各自的目录中,声明依赖项等等。
如果您只想创建一个默认POM并启用m2eclipse特性:那么我假设您目前没有试图导入的其他自动构建设置,并且我假设您正在谈论m2eclipse插件。
m2eclipse插件在项目上提供了一个右键单击选项来添加默认的pom.xml:
更新的M2E版本
右键单击项目->子菜单配置->转换为Maven项目
旧的M2E版本
右键单击Project ->子菜单Maven ->启用依赖项管理。
这将为该项目启用插件做必要的工作。
回答“是否存在自动导入器或向导?”’据我所知没有。使用上述选项将允许您为现有项目启用m2eclipse插件,从而避免手动复制。您仍然需要实际设置依赖项和其他需要自己构建的东西。
我也遇到了同样的问题,想要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.
右键单击项目名称>配置>转换为Maven项目>单击完成。在这里,您将添加一些依赖项以下载并添加您期望的jar文件。
这将创建一个自动生成的pom.xml文件。在eclipse编辑器中以xml格式打开该文件。在build标签后(</build>)添加你的依赖项,你可以从maven网站复制并添加它们。现在可以开始了。这些依赖项将自动添加您所需的jar文件。
有一个命令行程序可以将任何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