Maven(一)如何用Eclipse创建一个Maven项目
1.什么是Maven
Apache Maven 是一个项目管理和整合工具。基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven 能够管理项目的构建、报告和文档。
Maven工程结构和内容被定义在一个 xml 文件中——pom.xml,是 Project Object Model (POM) 的简称,此文件是整个 Maven 系统的基础组件。
2.为什么要用Maven
当我们创建一个Maven项目后,就不需要再自己去导入各种jar包了,将要导入的jar包依赖信息配置在pom.xml中,Maven项目会根据具体的配置自动地在编译、测试和运行的时候,从本地仓库中导入相应的各种依赖。
这样做有两个最大的好处,一个是项目的依赖被统一管理,不容易出现依赖冲突(比如说jar包引入的版本冲突);另一个就是项目的体积变小了,毕竟一个稍微大些的项目光是引入的jar包就占了相当多的体积,而Maven项目只需要一个pom.xml文件就搞定了
约定优于配置
Maven 使用约定而不是配置,开发者不需要再关心每一个配置细节。当创建 Maven 工程时,Maven 会创建默认的工程结构。开发者只需要合理的放置文件,并在 pom.xml 中添加项目相关的依赖。
Maven项目规定了源码文件、资源文件、测试文件、输出文件等的默认配置,简单的说就是把这些文件规定放在对应的路径下方便管理,如下表所示,假设${basedir}表示工程根目录:
| 项目工程的路径 | 存放的文件类型 |
|---|---|
| ${basedir}/src/main/java | 项目源码 |
| ${basedir}/src/main/resources | 资源文件,比如.properties文件 |
| ${basedir}/src/main/webapp | web项目相关资源文件,比如web.xml |
| ${basedir}/src/test/java | 测试用的源码 |
| ${basedir}/src/test/resources | 测试用的资源文件 |
| ${basedir}/target/classes | 编译后的文件 |
| ${basedir}/target/test-classes | 编译后用于测试的文件 |
如果是用Eclipse的Maven插件生成的Maven项目,只会自动生成src/main/resources和target/classes、target/test-classes,需要自己手动添加其它的目录,并且指定项目的source以及编译后的输出目录
3.Maven的安装与设置环境变量
想要创建一个Maven项目需要先安装Maven,并且设置好环境变量
- Maven下载
- 设置环境变量
- 新建变量
MAVEN_HOME,值为Maven的目录X:\XXX\apache-maven-XXX - 将
%MAVEN_HOME%\bin添加到Path变量下
- 新建变量
- 运行CMD,输入
mvn -v后可以看到Maven的版本信息等则表示安装成功
4.创建Maven项目和依赖
4.1创建Maven项目有两种方式,如下
第一种创建方式:使用命令行手动创建
mvn archetype:generate -DgroupId=com.lewis.seckill -DartifactId=seckill -Dpackage=com.lewis.seckill -Dversion=1.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-webapp
- 1
- 2
命令行执行后会创建一个maven-archetype-webapp骨架的Maven项目,其中groupId是项目组织唯一的标识符,实际对应JAVA的包的结构;artifactId是项目的唯一的标识符,实际对应项目的名称;package一般是groupId+artifactId,是自动生成的,可以修改
第二种创建方式:借助IDE工具的Maven插件来创建项目
笔者用的是Eclipse,所以这里只介绍Eclipse怎么用插件生成一个Maven项目
Eclipse安装Maven插件
- 不知道怎么Maven插件的请参考该博文,推荐使用 link 方式手工安装的方式
- 如果是手工安装Maven插件的,可能会缺少pom.xml 图形化编辑工具,请另外添加进去,具体情况请参考该博文
- 已经安装了Maven插件的请走下一个步骤
File→New→Other...→Maven Project→Next,进入如下界面
点击
Next,选择要构建的骨架maven-archetype-webapp,如下图
点击
Next,填写groupId=com.lewis.seckill,DartifactId=seckill,package=com.lewis.seckill(根据实际情况填写),然后Finish
将Maven项目转变为Eclipse支持的Web项目
此时构建好的只是一个Maven项目,需要将其转变为Eclipse支持的Web项目,这样才能够直接在Eclipse中部署到Tomcat上进行调试。具体情况请参考该博文
4.2修改pom.xml文件
当创建完Maven项目后会在根目录下有一个pom.xml文件,Maven项目通过pom.xml进行项目依赖的管理,如果没有该xml文件,Eclipse不会将该项目当作一个Maven项目
添加项目需要的jar包依赖
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lewis</groupId>
<artifactId>seckill</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>seckill Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
在这个pom.xml里,会自动添加了Junit的依赖,不过有可能是3.X版本的,我们将其版本改为4.11的,因为旧版本的Junit不支持注解测试。
项目需要什么依赖,我们就到该文件下添加相对应的配置信息,比如我们要使用MySQL,就这pom.xml文件的dependencies标签里引入如下配置
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
<scope>runtime</scope>
</dependency>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
每次更新完pom.xml文件并保存后,Maven 项目会自动检测下载新的依赖。这里的groupId+artifactId唯一定位了依赖仓库里的MySQL的驱动jar包,version 表示其版本,scope 表示该依赖的范围。在Maven项目中,编译、测试和 运行使用的是不同的classpath,runtime表示该项目在编译时不导入该依赖,而在测试和运行项目时则导入。
那么如何查找jar包坐标和版本信息呢?请参考该博文
更新依赖时可能存在的问题
由于Maven默认会前往中央仓库下载依赖,下载的速度可能会非常慢,甚至连接不上,一般我们会设置成阿里云的镜像,下载速度会快很多,具体操作请参考该博文
在Eclipse上运行Maven命令
在安装了Maven插件之后,已经不需要用cmd来输入命令,可以直接在Eclipse中直接输入指令。在cmd中每个命令都要加上mvn前缀,而在Eclipse中则不需要,一般常用的指令有clean、compile、install、package等,一般都会在执行命令前先执行clean清除编译后的文件
右键点击Maven项目,执行run as里的命令,也可以自己输入其他的命令,具体操作请参考该博文
执行Maven命令可能发生的问题
如果是第一次在Eclipse上创建Maven项目,可能会存在输入Maven命令,Eclipse的控制台却毫无反应的情况,这是因为没有传参数,具体情况请参考该博文
到这一步,我们的Maven项目就已经初步建立成功了,接下来只需要安装规定在src/main/java下放置源码,在src/main/resources下放置资源文件就行了
相关链接
Maven(一)如何用Eclipse创建一个Maven项目的更多相关文章
- Eclipse创建一个Maven Web项目
在这篇文章中,我们将演示如何在Eclipse IDE中使用maven创建一个动态Web项目. 使用的工具和技术 - Eclipse Jee Oxygen Maven 3.3.3 JavaSE 1.8 ...
- maven 学习---用Eclipse创建一个Maven Web项目
下面是使用 Eclipse 来创建一个Maven Web项目的说明.这是相当简单的. 现在让我们开始吧! 1: 启动 Eclipse, 点击 File->New->Other 2: 在弹出 ...
- 【Java_SSM】(二)使用eclipse创建一个Maven web工程
这篇博文我们介绍一下如何利用eclipse创件一个maven web工程. (1)File--New--Other--Maven--Maven project 此处我们快速创建一个maven工程 点击 ...
- 如何用Eclipse创建一个JavaSwing的项目
创建之前必须先给开发工具安装WindowBuilder插件(安装方法可自行百度) 方式一: 创建项目 new--other--WindowBuilder--SWT Designer----SWT/JF ...
- maven学习3,如何创建一个web项目
Maven学习 (三) 使用m2eclipse创建web项目 1.首先确认你的eclipse已经安装好m2eclipse的环境,可以参照上两篇Maven学习内容 2.新建一个maven的项目 ...
- eclipse 创建一个java项目 运行
五.使用Eclipse 1)第一次打开需要设置工作环境,你可以指定工作目录,或者使用默认的C盘工作目录,点击 ok 按钮. 2)创建一个项目 3)输入项目名称,比如我输入Orz_Jlx,然后点击fin ...
- Maven创建一个Web项目
我们可以通过命令行或者直接使用Eclipse创建一个maven webapp项目:通过命令行创建在命令行中输入如下格式的命令将会创建一个新的maven webapp项目:mvn archetype:g ...
- 用Eclipse 创建一个 简单的 Maven JavaWeb 项目
使用Maven 创建一个简单的 javaWeb 项目: 本篇属于 创建 JavaWeb 项目的第三篇: 建议阅读本篇之前 阅读 用 Eclipse 创建一个简单的web项目 ;本篇是这这篇文章的基础 ...
- eclipse中创建一个maven项目
1.什么是Maven Apache Maven 是一个项目管理和整合工具.基于工程对象模型(POM)的概念,通过一个中央信息管理模块,Maven 能够管理项目的构建.报告和文档. Maven工程结构和 ...
随机推荐
- Xcode - Xcodeproject详解
前言 在 iOS 开发过程中,我们经常会在 Xcode 里面做一些配置,比如添加系统库.第三方库,修改证书配置文件,修改编译属性等等. 在这个过程里面,一般大家仅仅只是根据经验来配置这些,并没有比较清 ...
- cocoa 的大招(KVC的几点强大应用记录)
1.利用KVC可以修改系统的只读变量 简单的KVC和我们平常通过一个“类名.属性”赋值一般: teacher.name = @"灭绝师太"; [teacher setValue:@ ...
- sublime设置tab键为4个空格
在使用sublime的时候,有时候新建的文件,默认的缩进是2个,那么如何将sublime设置tab键为4个空格呢? 具体方法: 配置: , "translate_tabs_to_spaces ...
- DevOps之持续交付
持续交付 持续交付是一种可以帮助团队以更短的周期交付软件的方法,该方法确保了团队可以在任何时间发布出可靠的软件.该方法意在以更快速度更高频率进行软件的构建.测试和发布. 通过对生产环境中的应用程序进行 ...
- 解决VMware安装ubuntu16.04后无法全屏的问题
参考教程:http://www.jb51.net/os/Ubuntu/356462.html 双系统经常崩,故在windows10下装了个ubuntu的虚拟机,安装完成后无法全屏,进入系统设置调试显示 ...
- POJ 1984 - Navigation Nightmare - [带权并查集]
题目链接:http://poj.org/problem?id=1984 Time Limit: 2000MS Memory Limit: 30000K Case Time Limit: 1000MS ...
- Python开发【笔记】:加锁的最佳方案
避开死锁 代码程序中,尽量要避免死锁的产生,下面分析常见的线程锁使用方式 :注:只有同一把锁才会产生互斥 1.常见的死锁方式(加锁时程序报错,锁未释放): import time import thr ...
- matplotlib基本使用方法
[微语]人生有可为之事,也有不可为之事.可为之事,当尽力为之,此谓尽性,不可为之事,当尽心为之,此谓知命. 三人行必有我师 官方参考API:https://matplotlib.org/tutoria ...
- 非极大值抑制(NMS)
非极大值抑制顾名思义就是抑制不是极大值的元素,搜索局部的极大值.这个局部代表的是一个邻域,邻域有两个参数可变,一个是邻域的维数,二是邻域的大小.这里不讨论通用的NMS算法,而是用于在目标检测中提取分数 ...
- js-jquery-插件开发(二)【最终插件是最后一个,中间是过程】
二.通过$.fn 向jQuery添加新的方法 2.1.基本格式: $.fn.pluginName = function() { //your code goes here } 说明:在$.fn后面添加 ...