Maven(1)maven相关知识
一、Maven介绍
- apache组织提供一个顶级项目
- maven是一个由Java开发工具
- 作用:
- 管理项目构建生命周期
- 管理项目中的jar
- 管理项目基础信息(文档管理,测试报告)
二、项目构建生命周期
- 简单: 开发 、编译、打包、发布
打包:(1)简单的Java工程,将工程中所有的Java类打成jar包
(2)简单的WEB工程,将工程打成war包---->可以放在tomcat里面直接运行的。
- 专业流程:
[清理clean]----->[编译compile]----->[测试test]----->[报告]----->[打包package]----->[发布]
三、项目中jar管理:
- jar管理难度:
- 定位较难
- jar包之间依赖很难
- jar之间冲突
- jar管理
四、MAVEN是如何管理jar
- 通常在我们本地计算机就会有一个本地仓库,本地仓库里面用来存放jar包,当我们用jar包时,会去本地仓库寻找所需要的jar包。然而当我们在本地找不到需要的jar包时,maven会去局域网哪里的***仓库寻找所谓的jar包,如果有就会返回到本地项目中。
- 如果在仓库里面还没有找到想要的jar包的话,maven就会前往外网,到中央仓库寻找。
[本地仓库]---->[局域网仓库]---->[中央仓库]
五、maven项目信息管理
- api文档
- 测试报告
六、MAVEN安装与配置
1.安装:解压即可,复制到没有中文和空格的文件夹下。
下载Maven打开链接:https://maven.apache.org/download.cgi
2. 配置:
1. JAVA-HOME:jdk安装位置
2. MAVEN-HOME:MAVEN安装位置
3. path:%MAVEN-HOME%\bin
七、maven的本地仓库
随便发送maven命令:
mvn clean
mvn compile
mvn package
导致maven在当前计算机上生成一个本地仓库
默认位置:c:\【用户/users】\【(登陆用户名称/Administrator)】\m2\resporsitry
八、重新设置MAVEN本地仓库地址
MAVEN安装路径\conf\settings.xml中定位标签
打开文档,在第53行# <localRepository>/path/to/local/repo </localRepository>
重新设置本地仓库地址,将新的地址放在标签中间就行。
九、MAVEN工程结构
- MAVEN可以管理工程,必须按照【约定结构】来创建
- 结构
src文件夹:(java代码)
- main(主要开发)
- Java(创建Java文件)
- resources(配置文件,propeties)
- test(主要进行测试)
- java(创建测试类)
- resources(测试时使用配置文件)
- main(主要开发)
target文件:(编译后class文件,在创建项目时,不需要创建。MAVEN命令在执行时自动创建target)
pom.xml:(核心配置文件;主要向MAVEN讨要jar)
<!--project是pom.xml的根元素,包含了一些约束的信息,比如xlms,xsi--> <project> <!--指定了当前pom的版本--> <modelVersion>4.0.0</modelVersion> <!--maven2.0必须是这样写,现在是maven2唯一支持的版本--> <!-- 基础设置 --> <groupId>反写公司的网址+项目名称</groupId> <artifactId>项目名称+模块名</artifactId> <version>当前项目版本号</version> <!-- 默认是jar,还可以打包成war/zip/pom--> <packaging>...</packaging> <!-- 项目描述名,一般是写项目文档的时候才使用 --> <name>...</name> <!-- 项目的地址--> <url>...</url> <!-- 项目的描述 --> <description>...</description> <!-- 开发人员的列表 --> <developers>...</developers> <!-- 许可证的信息 --> <licenses>...</licenses> <!-- 组织信息 --> <organization>...</organization> <!-- 依赖列表,下面可以包含多个依赖项dependency--> <dependencies> <dependency> <!-- 指定坐标确定依赖项的位置 --> <groupId></groupId> <artifactId></artifactId> <version></version> <type></type> <!-- 依赖包的依赖范围--> <scope></scope> <!-- 这个标签只有true和false两个值,是用来设置依赖是否可选 --> <optional></optional> <!-- 排除依赖传递列表 --> <exclusions> <exclusion> </exclusion> </exclusions> </dependency> </dependencies> <!-- 依赖管理,里面包含多个依赖,但是它并不会被运行,即不会被引用到实际的依赖中--> <!--这个标签主要是用来定义在父模块中,供子模块继承用 --> <dependencyManagement> <dependencies> <dependency> </dependency> </dependencies> </dependencyManagement> <!-- 常用于给构件的行为提供相应的支持 --> <build> <!-- 插件列表 --> <plugins> <plugin> <groupId></groupId> <artifactId></artifactId> <version></version> </plugin> </plugins> </build> <!-- 用于在子模块中对父模块的pom的继承 --> <parent>...</parent> <!-- 用来聚合多个模块,让多个模块进行编译,不用一个一个来 --> <modules> <module> </module> </modules> </project>
一个最简单的pom.xml的定义必须包含modelVersion、groupId、artifactId和version这四个元素,当然这其中的元素也是可以从它的父项目中继承的。在maven中,使用groupId、artifactId和version组成groupId:artifactId:version的形式来唯一确定一个项目:
<?xml version="1.0" encoding="UTF-8"?> <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> <!-- 含义:组织标识,定义了项目属于哪个组,风向标,坐标,或者说若把本项目打包 用途:此名称则是本地仓库中的路径,列如:otowa.user.dao,在M2_REPO目录下,将是: otowa/user/dao目录 命名规范:项目名称,模块,子模块 --> <groupId>otowa.user.dao</groupId> <!-- 含义:项目名称也可以说你所模块名称,定义当面Maven项目在组中唯一的ID 用途:例如:user-dao,在M2_REPO目录下,将是:otowa/user/dao/user-dao目录 命名规范:唯一就好 --> <artifactId>user-dao</artifactId> <!-- 含义:项目当前的版本号 用途:例如:0.0.1-SNAPSHOT,在M2_REPO目录下,将是:otowa/user/dao/user-dao/0.0.1-SNAPSHOT目录 --> <version>0.0.1-SNAPSHOT</version> <!-- 打包的格式,可以为:pom , jar , maven-plugin , ejb , war , ear , rar , par --> <packaging>war</packaging> <!-- 元素声明了一个对用户更为友好的项目名称 --> <name>maven</name> </project>
在打完jar包后,若想直接将jar包存储在本地仓库里面,可以按一下步骤:
在命令框里面输入:
- mvn clean 2. mvn install
这样可以帮我们把程序编译,测试,打包然后安装到本地仓库。
十、MAVEN常见命令(项目构建周期)
- mvn clean:删除当前工程中target
- mvn compile:将当前工程中main文件下所有的Java编译为class,输送到当前工程中target
- mvn package:将工程中test文件下所有的Java测试类的方法调用执行进行测试并声明【测试报告】
如果测试没有问题,将main文件下所有class文件打成(jar,war)输送到当前工程[target] - mvn install:与package命令执行基本一致,将【jar,war】推送到maven的本地仓库中。
十一、MAVEN坐标(gav)
为了方便maven对jar的定位。在maven世界中,每一个jar都要由一个独立坐标,相当于ip,这个独立坐标由三部分组成。
<groupId>反写公司的网址+项目名称</groupId> <artifactId>项目名称+模块名</artifactId> <version>当前项目版本号</version>