maven入门 02: part2()-Maven
maven入门 02: part2()
Part2
maven约定的项目结构
构建一个简单的maven项目
- 每一个maven项目在磁盘中都是一个文件夹,下面以项目:Hello为例
- Hello //项目名称
- src
- main //存放主程序里的java代码和配置文件
- java //程序中的java文件
- resources //java文件中要使用的配置文件
- test //存放测试程序代码和文件,可以没有
- java //测试程序包和包中的java文件
- resources //测试java程序中要使用的配置文件
- pom.xml //maven的核心文件,maven项目必须要有
- 在Hello/src/main/java下创建,创建包和java文件,并编写类文件HelloMaven.java
此时的java文件所在路径:Hello/scr/main/java/wangxun/HelloMaven
- 此时的java文件所在路径:Hello/scr/main/java/wangxun/HelloMaven
mvn complie 命令
- 在项目Hello下执行命令:mvn complie
会编译Hello/src/main目录下的所有java文件
- 会编译Hello/src/main目录下的所有java文件
- 此过程会下载许多东西
为什么要下载很多内容?(特别是第一次执行时)
maven工具执行的操作需要很对插件,需要额外下载
下载了哪些东西?
下载了很多需要的插件,本质是jar文件
下载的内容存放到了哪里?
默认仓库(本机仓库):用户目录下的一个隐藏目录,”.m2/repository”
- 为什么要下载很多内容?(特别是第一次执行时)
maven工具执行的操作需要很对插件,需要额外下载
- maven工具执行的操作需要很对插件,需要额外下载
- 下载了哪些东西?
下载了很多需要的插件,本质是jar文件
- 下载了很多需要的插件,本质是jar文件
- 下载的内容存放到了哪里?
默认仓库(本机仓库):用户目录下的一个隐藏目录,”.m2/repository”
- 默认仓库(本机仓库):用户目录下的一个隐藏目录,”.m2/repository”
- 执行完mvn compile,看到build success
在项目的根目录下生成target目录(结果目录),maven编译的java程序,最后的class文件都放在target目录中
- 在项目的根目录下生成target目录(结果目录),maven编译的java程序,最后的class文件都放在target目录中
设置本机资源的存放位置
- 修改maven的配置文件,maven安装目录/conf/setting.xml
修改前先备份
- 修改前先备份
- 修改 < localRepository > 标签里的内容为你自定义的仓库目录
maven仓库
什么是仓库
- 仓库是存放东西的,用来存放maven使用的jar包和我们项目中使用的jar包
maven使用的插件
我们项目使用的jar包(比如:第三方工具) - maven使用的插件
- 我们项目使用的jar包(比如:第三方工具)
仓库的分类
- 本地仓库:个人计算机上的文件夹,存放各种jar包
- 远程仓库:互联网上的,使用网络进行访问
中央仓库:最权威的,所有开发人员都使用的一个集中仓库
https://repo.maven.apache.org:中央仓库的地址
中央仓库的镜像:某种意义上的中央仓库的备份,在各大洲或者重要的城市中分布
私服:在公司内部,通过局域网访问,不对外使用 - 中央仓库:最权威的,所有开发人员都使用的一个集中仓库
https://repo.maven.apache.org:中央仓库的地址
- https://repo.maven.apache.org:中央仓库的地址
- 中央仓库的镜像:某种意义上的中央仓库的备份,在各大洲或者重要的城市中分布
- 私服:在公司内部,通过局域网访问,不对外使用
仓库的使用
- 不需要开发人员参与
-
仓库的调用
本地仓库 —-> 私服 —-> 镜像 —-> 中央仓库
<---- <---- <----
pom
存在形式
- maven项目对象模型,是一个pom.xml文件
坐标
- 唯一值,在互联网中唯一标识一个项目
公司域名的倒写
自定义项目名称
自定义版本号 - 公司域名的倒写
- 自定义项目名称
- 自定义版本号
- 我们要使用权威的,公共的jar包时
在https://www.mvnrepository.com的中央仓库中搜索
搜索的依据:目标jar包的坐标 - 在https://www.mvnrepository.com的中央仓库中搜索
- 搜索的依据:目标jar包的坐标
packaging
- 打包后压缩文件的扩展名,默认是jar,web应用是war
- packaging可以不写,默认是打成jar包
依赖
- dependencies和dependency,相当于java代码中的import
-
对项目中要使用的各种资源进行说明,例如需要mysql驱动
mysql
mysql-connector-java
5.1.9
properties
- 设置属性
build
- maven在进行项目构建时,需要参考的配置信息
例如:指定编译java代码使用的jdk的版本等
- 例如:指定编译java代码使用的jdk的版本等
maven生命周期
- 就是maven构建项目的过程
清理
编译
测试
报告
打包
安装
部署等 - 清理
- 编译
- 测试
- 报告
- 打包
- 安装
- 部署等
maven命令
- maven可以独立使用,通过命令,完成maven的生命周期的执行
常用命令
- mvn clean
清除原来编译和测试的目录,即target目录,但是已经install仓库里的包不会清除
- 清除原来编译和测试的目录,即target目录,但是已经install仓库里的包不会清除
- mvn compile
编译/src/main/java目录下的所有”.java文件”为”.class”文件,并将”.class”文件放置到target/classes目录下
- 编译/src/main/java目录下的所有”.java文件”为”.class”文件,并将”.class”文件放置到target/classes目录下
- mvn test-compile
编译/src/test/java目录下的所有”.java文件”为”.class”文件,并将”.class”文件放置到target/test-classes目录下
- 编译/src/test/java目录下的所有”.java文件”为”.class”文件,并将”.class”文件放置到target/test-classes目录下
- mvn test
操作maven生命周期中的某个步骤时,如果前面的步骤没有执行则会先将前面空缺的步骤走完,再执行本次命令
进行测试,显示测试结果到屏幕,并生成surefire-reports目录,保存测试结果 - 操作maven生命周期中的某个步骤时,如果前面的步骤没有执行则会先将前面空缺的步骤走完,再执行本次命令
- 进行测试,显示测试结果到屏幕,并生成surefire-reports目录,保存测试结果
- mvn package
编译,编译测试文件,测试,并且按照pom.xml配置把主程序( /src/main/* )打包成jar包或者war包
- 编译,编译测试文件,测试,并且按照pom.xml配置把主程序( /src/main/* )打包成jar包或者war包
- mvn install
将打包好的jar包,安装到本地maven仓库中
在仓库里的存放位置,参考原maven项目里pom.xml里的项目坐标 - 将打包好的jar包,安装到本地maven仓库中
- 在仓库里的存放位置,参考原maven项目里pom.xml里的项目坐标
maven的插件
- maven命令执行时,真正完成功能的是插件
插件就是一些jar文件,本质就是一些类文件
- 插件就是一些jar文件,本质就是一些类文件
单元测试
-
junit
一个专门用来测试的小框架
可以测试类中的方法,,每个方法都是独立测试的,方法是测试的基本单位
maven借助单元测试,批量的测试类中的大量方法是否符合预期 - 一个专门用来测试的小框架
- 可以测试类中的方法,,每个方法都是独立测试的,方法是测试的基本单位
- maven借助单元测试,批量的测试类中的大量方法是否符合预期
-
使用步骤
在pom.xml文件中加入单元测试依赖,示例如下:
junit
junit
4.11
test
在maven项目中的src/test/java目录下,创建测试程序
测试目录的包名参考原包名
推荐的创建类和方法的命名规范测试类的名称:Test + 待测试类的名称
测试的方法名称:test + 待测试的方法名称测试示例:待测试的类为HelloMaven
//1. 创建测试类:TestHelloMaven//2. 创建测试方法
@Test
public void testAdd(){
//测试HelloMaven的add方法是否正确
//需要用到junit提供的测试方法
}说明:
方法是public的,必须的
方法没有返回值,必须的
方法名称是自定义的,推荐:test + 待测试方法名
在方法上加入:@Test -
在pom.xml文件中加入单元测试依赖,示例如下:
junit
junit
4.11
test
-
在maven项目中的src/test/java目录下,创建测试程序
测试目录的包名参考原包名
推荐的创建类和方法的命名规范测试类的名称:Test + 待测试类的名称
测试的方法名称:test + 待测试的方法名称 - 测试目录的包名参考原包名
- 推荐的创建类和方法的命名规范
测试类的名称:Test + 待测试类的名称
测试的方法名称:test + 待测试的方法名称 - 测试类的名称:Test + 待测试类的名称
- 测试的方法名称:test + 待测试的方法名称
-
测试示例:待测试的类为HelloMaven
//1. 创建测试类:TestHelloMaven//2. 创建测试方法
@Test
public void testAdd(){
//测试HelloMaven的add方法是否正确
//需要用到junit提供的测试方法
}说明:
方法是public的,必须的
方法没有返回值,必须的
方法名称是自定义的,推荐:test + 待测试方法名
在方法上加入:@Test - 说明:
方法是public的,必须的
方法没有返回值,必须的
方法名称是自定义的,推荐:test + 待测试方法名
在方法上加入:@Test - 方法是public的,必须的
- 方法没有返回值,必须的
- 方法名称是自定义的,推荐:test + 待测试方法名
- 在方法上加入:@Test
Part2
maven约定的项目结构
构建一个简单的maven项目
- 每一个maven项目在磁盘中都是一个文件夹,下面以项目:Hello为例
- Hello //项目名称
- src
- main //存放主程序里的java代码和配置文件
- java //程序中的java文件
- resources //java文件中要使用的配置文件
- test //存放测试程序代码和文件,可以没有
- java //测试程序包和包中的java文件
- resources //测试java程序中要使用的配置文件
- pom.xml //maven的核心文件,maven项目必须要有
- 在Hello/src/main/java下创建,创建包和java文件,并编写类文件HelloMaven.java
此时的java文件所在路径:Hello/scr/main/java/wangxun/HelloMaven
- 此时的java文件所在路径:Hello/scr/main/java/wangxun/HelloMaven
mvn complie 命令
- 在项目Hello下执行命令:mvn complie
会编译Hello/src/main目录下的所有java文件
- 会编译Hello/src/main目录下的所有java文件
- 此过程会下载许多东西
为什么要下载很多内容?(特别是第一次执行时)
maven工具执行的操作需要很对插件,需要额外下载
下载了哪些东西?
下载了很多需要的插件,本质是jar文件
下载的内容存放到了哪里?
默认仓库(本机仓库):用户目录下的一个隐藏目录,”.m2/repository”
- 为什么要下载很多内容?(特别是第一次执行时)
maven工具执行的操作需要很对插件,需要额外下载
- maven工具执行的操作需要很对插件,需要额外下载
- 下载了哪些东西?
下载了很多需要的插件,本质是jar文件
- 下载了很多需要的插件,本质是jar文件
- 下载的内容存放到了哪里?
默认仓库(本机仓库):用户目录下的一个隐藏目录,”.m2/repository”
- 默认仓库(本机仓库):用户目录下的一个隐藏目录,”.m2/repository”
- 执行完mvn compile,看到build success
在项目的根目录下生成target目录(结果目录),maven编译的java程序,最后的class文件都放在target目录中
- 在项目的根目录下生成target目录(结果目录),maven编译的java程序,最后的class文件都放在target目录中
设置本机资源的存放位置
- 修改maven的配置文件,maven安装目录/conf/setting.xml
修改前先备份
- 修改前先备份
- 修改 < localRepository > 标签里的内容为你自定义的仓库目录
maven仓库
什么是仓库
- 仓库是存放东西的,用来存放maven使用的jar包和我们项目中使用的jar包
maven使用的插件
我们项目使用的jar包(比如:第三方工具) - maven使用的插件
- 我们项目使用的jar包(比如:第三方工具)
仓库的分类
- 本地仓库:个人计算机上的文件夹,存放各种jar包
- 远程仓库:互联网上的,使用网络进行访问
中央仓库:最权威的,所有开发人员都使用的一个集中仓库
https://repo.maven.apache.org:中央仓库的地址
中央仓库的镜像:某种意义上的中央仓库的备份,在各大洲或者重要的城市中分布
私服:在公司内部,通过局域网访问,不对外使用 - 中央仓库:最权威的,所有开发人员都使用的一个集中仓库
https://repo.maven.apache.org:中央仓库的地址
- https://repo.maven.apache.org:中央仓库的地址
- 中央仓库的镜像:某种意义上的中央仓库的备份,在各大洲或者重要的城市中分布
- 私服:在公司内部,通过局域网访问,不对外使用
仓库的使用
- 不需要开发人员参与
-
仓库的调用
本地仓库 —-> 私服 —-> 镜像 —-> 中央仓库
<---- <---- <----
pom
存在形式
- maven项目对象模型,是一个pom.xml文件
坐标
- 唯一值,在互联网中唯一标识一个项目
公司域名的倒写
自定义项目名称
自定义版本号 - 公司域名的倒写
- 自定义项目名称
- 自定义版本号
- 我们要使用权威的,公共的jar包时
在https://www.mvnrepository.com的中央仓库中搜索
搜索的依据:目标jar包的坐标 - 在https://www.mvnrepository.com的中央仓库中搜索
- 搜索的依据:目标jar包的坐标
packaging
- 打包后压缩文件的扩展名,默认是jar,web应用是war
- packaging可以不写,默认是打成jar包
依赖
- dependencies和dependency,相当于java代码中的import
-
对项目中要使用的各种资源进行说明,例如需要mysql驱动
mysql
mysql-connector-java
5.1.9
properties
- 设置属性
build
- maven在进行项目构建时,需要参考的配置信息
例如:指定编译java代码使用的jdk的版本等
- 例如:指定编译java代码使用的jdk的版本等
maven生命周期
- 就是maven构建项目的过程
清理
编译
测试
报告
打包
安装
部署等 - 清理
- 编译
- 测试
- 报告
- 打包
- 安装
- 部署等
maven命令
- maven可以独立使用,通过命令,完成maven的生命周期的执行
常用命令
- mvn clean
清除原来编译和测试的目录,即target目录,但是已经install仓库里的包不会清除
- 清除原来编译和测试的目录,即target目录,但是已经install仓库里的包不会清除
- mvn compile
编译/src/main/java目录下的所有”.java文件”为”.class”文件,并将”.class”文件放置到target/classes目录下
- 编译/src/main/java目录下的所有”.java文件”为”.class”文件,并将”.class”文件放置到target/classes目录下
- mvn test-compile
编译/src/test/java目录下的所有”.java文件”为”.class”文件,并将”.class”文件放置到target/test-classes目录下
- 编译/src/test/java目录下的所有”.java文件”为”.class”文件,并将”.class”文件放置到target/test-classes目录下
- mvn test
操作maven生命周期中的某个步骤时,如果前面的步骤没有执行则会先将前面空缺的步骤走完,再执行本次命令
进行测试,显示测试结果到屏幕,并生成surefire-reports目录,保存测试结果 - 操作maven生命周期中的某个步骤时,如果前面的步骤没有执行则会先将前面空缺的步骤走完,再执行本次命令
- 进行测试,显示测试结果到屏幕,并生成surefire-reports目录,保存测试结果
- mvn package
编译,编译测试文件,测试,并且按照pom.xml配置把主程序( /src/main/* )打包成jar包或者war包
- 编译,编译测试文件,测试,并且按照pom.xml配置把主程序( /src/main/* )打包成jar包或者war包
- mvn install
将打包好的jar包,安装到本地maven仓库中
在仓库里的存放位置,参考原maven项目里pom.xml里的项目坐标 - 将打包好的jar包,安装到本地maven仓库中
- 在仓库里的存放位置,参考原maven项目里pom.xml里的项目坐标
maven的插件
- maven命令执行时,真正完成功能的是插件
插件就是一些jar文件,本质就是一些类文件
- 插件就是一些jar文件,本质就是一些类文件
单元测试
-
junit
一个专门用来测试的小框架
可以测试类中的方法,,每个方法都是独立测试的,方法是测试的基本单位
maven借助单元测试,批量的测试类中的大量方法是否符合预期 - 一个专门用来测试的小框架
- 可以测试类中的方法,,每个方法都是独立测试的,方法是测试的基本单位
- maven借助单元测试,批量的测试类中的大量方法是否符合预期
-
使用步骤
在pom.xml文件中加入单元测试依赖,示例如下:
junit
junit
4.11
test
在maven项目中的src/test/java目录下,创建测试程序
测试目录的包名参考原包名
推荐的创建类和方法的命名规范测试类的名称:Test + 待测试类的名称
测试的方法名称:test + 待测试的方法名称测试示例:待测试的类为HelloMaven
//1. 创建测试类:TestHelloMaven//2. 创建测试方法
@Test
public void testAdd(){
//测试HelloMaven的add方法是否正确
//需要用到junit提供的测试方法
}说明:
方法是public的,必须的
方法没有返回值,必须的
方法名称是自定义的,推荐:test + 待测试方法名
在方法上加入:@Test -
在pom.xml文件中加入单元测试依赖,示例如下:
junit
junit
4.11
test
-
在maven项目中的src/test/java目录下,创建测试程序
测试目录的包名参考原包名
推荐的创建类和方法的命名规范测试类的名称:Test + 待测试类的名称
测试的方法名称:test + 待测试的方法名称 - 测试目录的包名参考原包名
- 推荐的创建类和方法的命名规范
测试类的名称:Test + 待测试类的名称
测试的方法名称:test + 待测试的方法名称 - 测试类的名称:Test + 待测试类的名称
- 测试的方法名称:test + 待测试的方法名称
-
测试示例:待测试的类为HelloMaven
//1. 创建测试类:TestHelloMaven//2. 创建测试方法
@Test
public void testAdd(){
//测试HelloMaven的add方法是否正确
//需要用到junit提供的测试方法
}说明:
方法是public的,必须的
方法没有返回值,必须的
方法名称是自定义的,推荐:test + 待测试方法名
在方法上加入:@Test - 说明:
方法是public的,必须的
方法没有返回值,必须的
方法名称是自定义的,推荐:test + 待测试方法名
在方法上加入:@Test - 方法是public的,必须的
- 方法没有返回值,必须的
- 方法名称是自定义的,推荐:test + 待测试方法名
- 在方法上加入:@Test