开发环境:
Windows 10 64位
jdk 1.8
eclipse mars2 (4.5.2)
1、Maven项目创建及环境配置
项目创建:
打开eclipse开发工具及选择工作空间,配置好maven工具,详细配置见 Maven安装及配置
2、Maven项目的一键构建
一般maven项目,往往都需要经历编译、测试、运行、打包、安装、部署等一系列的过程。
构建:
是指项目从编译、测试、运行、打包、安装、部署整个过程都交给 maven 进行管理,这个过程称为构建。
一键构建:
是指整个构建过程,使用 maven 一个命令可以轻松完成整个工作。
3、Maven仓库的分类
本地仓库:
当启动一个maven工程的时候,默认在系统盘找本地仓库。如果本地仓库没有所需要的jar文件,则会自动从中央仓库自动下载所需要的 jar 文件(电脑需要联网),如果电脑未联网则会出现错误。
远程仓库:也称作 “私服”
在公司里,为了在不联网的情况下 可以进行项目开发,也为了公司内部项目所需要的jar包可以放在一个统一的地方,会再创建一个仓库,这个仓库叫远程仓库。如果自己的电脑和远程仓库在同一个局域网内,那么就可以通过局域网从远程仓库下载jar包,假如远程仓库没有我们需要的jar包,那么远程仓库会直接从中央仓库下载jar包,远程仓库的jar包有一部分是从本地上传上来的,另一部分jar包是从中央仓库下载下来的。
中央仓库:
放置了几乎所有开源的jar
4、Maven生命周期
默认生命周期
编译(compile)、测试(test)、打包(package)、安装(install)、发布(deploy),当执行后面命令的时候,前面所有命令会自动执行一次。
清理生命周期
清理项目编译信息(clean),在真正编译项目之前,把之前编译的信息全部清除掉,也就是说我们真正开始对项目构建之前的准备工作。
站点生命周期
实际开发中不怎么使用,不需要了解。
5、Maven概念模型
项目对象模型(POM):
包含项目自身信息、项目运行所依赖的jar包信息、项目运行环境信息(比如:jdk、tomcat信息)
依赖管理模型(Dependency):
jar包依赖信息,包含公司组织的名称、项目名、版本号等
当启动一个maven工程的时候,默认在系统盘找本地仓库。如果本地仓库没有所需要的jar文件,则会自动从中央仓库自动下载所需要的 jar 文件(电脑需要联网)。在公司里,如果本地仓库没有所需要的jar文件,会从远程仓库(私服)中下载jar文件,如果远程仓库(私服)中也没有jar文件,则会自动从中央仓库自动下载所需要的 jar 文件。
6、Maven常用命令
Maven项目目录结构
然后系统文件夹展示的maven项目是这样的:
常用命令
clean 命令: 清理操作。将项目根目录的target目录清理掉。
实际上,执行清理操作,是把maven项目中的target目录内容全部删除,如下图:target目录已经不存在了。
compile 命令: 编译操作。将java源程序编译成class文件,生成target目录
test 命令:单元测试操作。执行src/test/java目录中的测试类中测试方法,测试类名以Test结尾。
package 命令:项目打包操作。 Web项目将打成war包,Java项目将打成jar包,将项目打包到根目录下的target目录中。
install 命令:安装操作。将项目打包(war包 或 jar包)到本地仓库。可以解决本地多项目公用一个jar包问题。
7、依赖范围
依赖范围scope
用来控制依赖和编译,测试,运行的classpath的关系。具体的依赖范围有如下6种:
-
compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效
-
test:测试依赖范围。只对于测试classpath有效
-
provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api
-
runtime:运行时提供。例如:jdbc驱动
-
system:系统范围,自定义构件,指定systemPath;跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它。
-
import:只使用在<dependencyManagement>中,表示从其它的pom中导入dependency的配置。
注意:如果要使用tomcat目录中自带的jar包,必须将项目中依赖作用范围设置为:provided。例如:servlet-api,jsp-api
附上项目中添加servlet-api,jsp-api依赖截图: