您的位置:首页 > 其它

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,将项目打包,通常应用于发布前
执行过程:
清理————清空环境
编译————编译源码
测试————测试源码
打包————将编译的非测试类打包
部署————将打好的包发布到资源仓库中

每天努力一点,每天都在进步!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息