Maven简介
2017-09-08 23:15
197 查看
maven简介
1、什么是maven
翻译为“专家”,“内行”
Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。
什么是理想的项目构建?
高度自动化,跨平台,可重用的组件,标准化的
什么是依赖?为什么要进行依赖管理?
自动下载,统一依赖管理
有哪些项目信息?
项目名称描述等,开发人员信息,开发者信息等
2、配置maven仓库
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:\java\maven\repository</localRepository>
一定要把settings.xml拷一份放到创建的仓库目录。
settings.xml文件必须与maven安装路径下的内容保持一致
3、Maven约定,结构
src/main/java —— 存放项目的.java文件
src/main/resources —— 存放项目资源文件,如spring, hibernate配置文件
src/test/java —— 存放所有测试.java文件,如JUnit测试类
src/test/resources —— 测试资源文件
target —— 项目输出位置
pom.xml——maven项目核心配置文件
4、Maven 坐标
什么是坐标?
在平面几何中坐标(x,y)可以标识平面中唯一的一点
Maven坐标主要组成
groupId:定义当前Maven项目隶属项目
artifactId:定义实际项目中的一个模块
version:定义当前项目的当前版本
packaging:定义该项目的打包方式
Maven为什么使用坐标?
Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范
拥有了统一规范,就可以把查找工作交给机器
5、依赖管理-依赖范围:
其中依赖范围scope 用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下:
1.compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效
2.test:测试依赖范围。只对于测试classpath有效
3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api
4.runtime:运行时提供。例如:jdbc驱动
列是第一直接依赖,行是第二间接依赖
传递依赖
可选依赖
<optional> true/false 是否向下传递
<dependency>
<groupId>cn.itcast</groupId>
<artifactId>One</artifactId>
<version>${system.version}</version>
<!-- 可选依赖控制当前依赖是否向下传递成为间接依赖 -->
<!-- <optional>true</optional> -->
</dependency>
排除依赖
<exclusions>
<exclusion>
所包含坐标排除依赖包中所包含的依赖关系不需要添加版本,直接类别排除
依赖冲突
如果直接与间接依赖中包含有同一个坐标不同版本的资源依赖,以直接依赖的版本为准(就近原则)
如果直接依赖中包含有同一个坐标不同版本的资源依赖,以配置顺序下方的版本为准(就近原则)
6、一个项目怎么打成jar包让另一项目使用
cmd 中录入 mvn clean install 查看仓库,当前项目被发布到仓库中,其他项目就可以通过配置依赖使用jar包。
组合指令,先执行clean,再执行install,将项目打包,通常应用于发布前
执行过程:
清理————清空环境
编译————编译源码
测试————测试源码
打包————将编译的非测试类打包
部署————将打好的包发布到资源仓库中
每天努力一点,每天都在进步!
1、什么是maven
翻译为“专家”,“内行”
Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。
什么是理想的项目构建?
高度自动化,跨平台,可重用的组件,标准化的
什么是依赖?为什么要进行依赖管理?
自动下载,统一依赖管理
有哪些项目信息?
项目名称描述等,开发人员信息,开发者信息等
2、配置maven仓库
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:\java\maven\repository</localRepository>
一定要把settings.xml拷一份放到创建的仓库目录。
settings.xml文件必须与maven安装路径下的内容保持一致
3、Maven约定,结构
src/main/java —— 存放项目的.java文件
src/main/resources —— 存放项目资源文件,如spring, hibernate配置文件
src/test/java —— 存放所有测试.java文件,如JUnit测试类
src/test/resources —— 测试资源文件
target —— 项目输出位置
pom.xml——maven项目核心配置文件
4、Maven 坐标
什么是坐标?
在平面几何中坐标(x,y)可以标识平面中唯一的一点
Maven坐标主要组成
groupId:定义当前Maven项目隶属项目
artifactId:定义实际项目中的一个模块
version:定义当前项目的当前版本
packaging:定义该项目的打包方式
Maven为什么使用坐标?
Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范
拥有了统一规范,就可以把查找工作交给机器
5、依赖管理-依赖范围:
其中依赖范围scope 用来控制依赖和编译,测试,运行的classpath的关系. 主要的是三种依赖关系如下:
1.compile: 默认编译依赖范围。对于编译,测试,运行三种classpath都有效
2.test:测试依赖范围。只对于测试classpath有效
3.provided:已提供依赖范围。对于编译,测试的classpath都有效,但对于运行无效。因为由容器已经提供,例如servlet-api
4.runtime:运行时提供。例如:jdbc驱动
列是第一直接依赖,行是第二间接依赖
传递依赖
可选依赖
<optional> true/false 是否向下传递
<dependency>
<groupId>cn.itcast</groupId>
<artifactId>One</artifactId>
<version>${system.version}</version>
<!-- 可选依赖控制当前依赖是否向下传递成为间接依赖 -->
<!-- <optional>true</optional> -->
</dependency>
排除依赖
<exclusions>
<exclusion>
所包含坐标排除依赖包中所包含的依赖关系不需要添加版本,直接类别排除
依赖冲突
如果直接与间接依赖中包含有同一个坐标不同版本的资源依赖,以直接依赖的版本为准(就近原则)
如果直接依赖中包含有同一个坐标不同版本的资源依赖,以配置顺序下方的版本为准(就近原则)
6、一个项目怎么打成jar包让另一项目使用
cmd 中录入 mvn clean install 查看仓库,当前项目被发布到仓库中,其他项目就可以通过配置依赖使用jar包。
组合指令,先执行clean,再执行install,将项目打包,通常应用于发布前
执行过程:
清理————清空环境
编译————编译源码
测试————测试源码
打包————将编译的非测试类打包
部署————将打好的包发布到资源仓库中
每天努力一点,每天都在进步!