将已有的Eclipse项目转化为Maven项目

我们之前在Eclipse IDE完成的Java命令行项目、Java Web项目也使用了构建工具——Ant,它帮助我们编译、运行Java源代码(无需我们自己调用javacjava等命令来进行重复、繁琐的构建任务)。以Java项目为例,它的目录结构一般是这样的:

.
├── bin

│ └── com

│ └── tianmaying

│ └── Test.class

└── src

└── com

└── tianmaying

└── Test.java

Eclipse/Ant默认将项目目录下的src文件夹作为项目源代码文件夹,并编译其中的源代码,最终的输出结果(.class文件)放在了bin目录下。运行Test类中的main函数也是使用bin目录下对应的字节码文件。

使用Maven来管理项目,本质上是将项目的目录结构改为Maven的约定方式(例如src/main/java目录存放Java源代码文件)。

手动转换


首先,在项目根目录下创建pom.xml


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.tianmaying</groupId>

<artifactId>to-maven-project</artifactId>

<version>0.0.1-SNAPSHOT</version>

<name>ToMavenProject</name>

<build>

<plugins>

<plugin>

<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>

<configuration>

<source>1.8</source>

<target>1.8</target>

</configuration>

</plugin>

</plugins>

</build>

</project>

接下来创建src/main/java文件夹,并将所有源代码从原先的src目录下移动过来(保持目录结构不变):

.
├── pom.xml

└── src

└── main

└── java

└── com

└── tianmaying

└── Test.java

接下来运行mvn clean install应该可以看到成功的消息,但是在Eclipse中,刷新项目后你可能会看到类似这样的错误消息:

这是因为Eclipse仍然认为当前项目是使用Ant进行构建的,为此,我们需要告知Eclipse我们使用的是Maven!

鼠标右键单击项目,然后选择【Configure】->【Convert to Maven Projects…】,此时项目图标的左上角会出现一个M字样

但是此时Eclipse的配置中,项目的源代码文件仍然是src

点击【Remove】按钮将其移除,并【Add Folder】将src/main/java添加即可。当然在Remove后我们也可以不添加,而是保存退出,接下来右键点击项目,【Maven】->【Update
Project】,让Eclipse自动判断项目类型并设置正确的源代码目录。

Eclipse自动配置

鼠标右键单击项目,然后选择【Configure】->【Convert to Maven Projects…】,此时项目图标的左上角会出现一个M字样

如果我们不创建pom.xml,直接让Eclipse来帮助我们创建也是没有问题的,在上述步骤完成后(请自行填入Maven所需的groupIdartifactIdname等信息)后,Eclipse会自动创建一个pom.xml,内容和我们手动创建的几乎没有区别,唯一的不同在于它发现我们的源代码在src文件夹下,而手动指定了源代码目录的位置:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.tianmaying</groupId>

<artifactId>to-maven-project</artifactId>

<version>0.0.1-SNAPSHOT</version>

<name>ToMavenProject</name>

<build>
<sourceDirectory>src</sourceDirectory>

<plugins>

<plugin>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.5.1</version>

<configuration>

<source>1.8</source>

<target>1.8</target>

</configuration>

</plugin>

</plugins>

</build>

</project>

这样的好处在于我们不需要修改任何配置,但是我们仍然推荐将代码结构修改为Maven的默认约定(src/main/java),如果这样做,不要忘记删除这一行<sourceDirectory>src</sourceDirectory>

版权声明

将已有的Eclipse项目转化为Maven项目的更多相关文章

  1. 把Eclipse项目转换成Maven项目

    把Maven项目转换成Eclipse项目只要使用Maven的Eclipse插件就能做到 mvn eclipse:eclipse 其实Maven的Eclipse插件也有把Eclipse项目转换成Mave ...

  2. eclipse中创建一个maven项目

    1.什么是Maven Apache Maven 是一个项目管理和整合工具.基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven 能够管理项目的构建.报告和文档. Maven工程结构和 ...

  3. eclipse项目改为maven项目导致svn无法比较历史数据的解决办法

    这个问题没有找到合适的答案,最终自己想出了一个解决方案,在此记录下. 问题描述 在将老的eclipse项目重构为maven项目时,我这边是新建了一个maven项目,然后将对应的数据分别放到相应的位置, ...

  4. eclipse 将javaWeb项目转化成maven项目

      eclipse 将javaWeb项目转化成maven项目 CreateTime--2018年4月18日16:04:18 Author:Marydon 1.首先,maven项目的标准目录 2.web ...

  5. <转>创建支持eclipse的多模块maven项目

    如何使用eclipse创建Maven工程及其子模块 1,首先创建一个父类工程   子模块继承父类工程      并在父类工程的pom.xml文件中定义引入的jar及其版本号     子模块可以引用 2 ...

  6. 如何将 Java 项目转换成 Maven 项目

    本文内容 Java 项目 Maven 项目 Java 项目转换成 Maven 项目 本文主要介绍如何将 Java 项目转换成 Maven 项目.首先要明确的是,用 Maven 管理 Java 项目的确 ...

  7. 转:如何将 Java 项目转换成 Maven 项目

    如何将 Java 项目转换成 Maven 项目 本文内容 Java 项目 Maven 项目 Java 项目转换成 Maven 项目 本文主要介绍如何将 Java 项目转换成 Maven 项目.首先要明 ...

  8. Myeclipse Java项目转换成Maven项目

    1.在Eclipse中Java项目转换成Maven项目可以在项目右键-->configure-->Convert Plug-in projects..  就可以.而在myeclipse中项 ...

  9. Maven 学习笔记——将普通的Java项目转换成Maven项目(3)

    将一个普通的java项目转换成Maven项目并不是一个很大的任务,仅仅只需要下面的几步就能将转换成功.下面我是用一个简单的Selenium测试小demon作为例子来说的. 移调项目中所有关联的Libr ...

随机推荐

  1. MySQL 大数据量文本插入

    导入几万条数据需要等好几分钟的朋友来围观一下! 百万条数据插入,只在一瞬间.呵呵夸张,夸张!! 不到半分钟是真的! 插入指令: load data infile 'c:/wamp/tmp/Data_O ...

  2. caioj 1078 动态规划入门(非常规DP2:不重叠线段)(状态定义问题)

    我一开始想的是前i个区间的最大值 显然对于当前的区间,有不选和选两种情况 如果不选的话,就继承f[i-1] 如果选的话,找离当前区间最近的区间取最优 f[i] = max(f[i-1, f[j] + ...

  3. 国庆 day 6 下午

    1.数组异或 (xorarray.pas/c/cpp) (xorarray.in/out) 时间限制:2s/空间限制:256M [题目描述] xor——异或,和 and 与or 一样,是一种重要的逻辑 ...

  4. NYOJ_77 开灯问题

    题目地址 分析: 用一个数组来保存每盏灯的操作的次数.推断奇偶就可以推断灯的状态. 最后的输出格式须要注意一下空格的位置,思路就是现输出一个.剩下来的输出在前面加一个空格. 空格用_表示: 1_3_5 ...

  5. Linux下无需输入password自己主动登陆sshserver方法

    用OpenSSH在linux下登陆sshserver时.每次都提示要输入password,并且使用vim 的netrw插件编辑远程文件时每次改动后保存都要输password,很麻烦. 查看了netrw ...

  6. 如何调试Blink?

    内容 尽管有很多工具和技巧可用于调试Blink,这个文章的重点调试Blink除布局測试之外的feature. 1 介绍 2 Linux 2.1 入门 2.2 启动Debugger 3 实用的工具 3. ...

  7. 离线安装 Chrome

    离线安装 Chrome 在这个帮助网页中最下面切换到中文 https://support.google.com/chrome/answer/95346 在网页的中上部点击 "离线安装 Chr ...

  8. Delegates, Events, and Anonymous Methods 委托、事件与匿名方法

    http://www.cnblogs.com/r01cn/archive/2012/11/30/2795977.html

  9. jquery ajax中支持哪些返回类型以及js中判断一个类型常用的方法?

    1 jquery ajax中支持哪些返回类型在JQuery中,AJAX有三种实现方式:$.ajax() , $.post , $.get(). 预期服务器返回的数据类型.如果不指定,jQuery 将自 ...

  10. Ubuntu16.04+Gnome3 锁定屏幕快捷键无效解决办法

    Ubuntu16.04 桌面环境通过Ubuntu server和后安装的Gnome3 桌面环境实现,安装完以后发现锁定屏幕快捷键无效,系统设置=>键盘=>快捷中 锁屏快捷键已经存在Supe ...