1.Maven介绍及环境搭建
1.1 maven介绍
maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
1.2 maven环境搭建
从maven官网下载最新的maven版本,并配置环境变量(此处不做详细介绍,不会可以百度)。
2.maven版的HelloWorld
第一步: 建立maven的目录结构
--HelloWorld(项目名)
--src
--main
--java
--com.imooc.maven01.model(包名)
--test
--java
--com.imooc.maven01.model(包名)
第二步:创建Java文件及其测试文件
HelloWorld.java
1 package com.imooc.maven01.model; 2 3 public class HelloWorld { 4 public String sayHello() { 5 return "HelloWorld!"; 6 } 7 }
HelloWorldTest.java测试类
package com.imooc.maven01.model; import org.junit.*; import org.junit.Assert.*; public class HelloWorldTest { @Test public void testHello() { Assert.assertEquals("HelloWorld!", new HelloWorld().sayHello()); } }
第三步:配置pom.xml文件
pom.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 5 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 6 <modelVersion>4.0.0</modelVersion> 7 8 <groupId>com.imooc.maven01</groupId> 9 <artifactId>maven01-model</artifactId> 10 <version>0.0.1-SNAPSHOT</version> 11 12 <dependencies> 13 <dependency> 14 <groupId>junit</groupId> 15 <artifactId>junit</artifactId> 16 <version>4.10</version> 17 </dependency> 18 </dependencies> 19 </project>
第四步:编译项目、运行测试、打包项目
编译项目 mvn compile
此时在target目录下有两个文件夹,一个是项目编译生成的class字节码文件,另一个是maven状态文件。
运行测试 mvn test
运行测试会生成class字节码文件和一个测试报告文件。
打包文件 mvn package
运行打包命令会在target目录下生成一个jar包和pom属性文件。
3.maven常用命令
mvn -v 查看版本
mvn compile 编译
mvn test 测试
mvn package 打包
mvn clean 删除target目标文件
mvn install 安装jar包到本地仓库中,打包到本地仓库之后其他的项目就可以在pom.xml文件中引入这个依赖。
程序运行时如果需要某个依赖,它会在pom.xml文件中手动引入,pom.xml文件查找依赖的顺序:先在本地仓库寻找,如果maven的本地仓库没有这个依赖, 就会到maven的中央仓库寻找这个依赖并下载将其放到本地仓库中供项目进行引用。
4.maven自动创建目录骨架
方式一:mvn archetype:generate 生成目录骨架 这种方式是按照提示进行选择
方式二:mvn archetype:generate -DgroupId=组织名,公司网址的反写+项目名
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所存在的包名
5.maven的坐标和仓库
坐标
构建
仓库
本地仓库和远程仓库
镜像仓库
更改仓库位置
6.maven的生命周期和插件
完整的项目构建过程包括:
清理、编译、测试、打包、集成测试、验证、部署
Maven的生命周期:
Clean 清理项目
Pre-clean 执行清理前的工作
Clean 清理上一次构建生成的所有文件
Post-clean 执行清理后的文件
Default 构建项目(核心)
Compile test package install
Site 生成项目站点
Pre-site 在生成项目站点前要完成的工作
Site 生成项目的站点文档
Post-site 在生成项目站点后要完成的工作
Site-deploy 发布生成的站点到服务器上
Clean、compile、test、package、installl
7.pom.xml常用元素解析
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 5 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 6 <!--指定了当前pom的版本--> 7 <modelVersion>4.0.0</modelVersion> 8 9 <groupId>反写的公司网址+项目名</groupId> 10 <artifactId>项目名+模块名</artifactId> 11 <!--第一个0表示大版本号 12 第二个0表示分支版本号 13 第三个0表示小版本号 14 0.0.1 15 snapshot 快照版本 16 alpha 内部测试 17 beta 公测版本 18 release 稳定版本 19 GA 正式发布 20 --> 21 <version>0.0.1-SNAPSHOT</version> 22 23 <!--打包方式 24 默认是jar 25 war zip pom 26 --> 27 <packageing></packageing> 28 29 30 <!--项目描述名 31 在产生项目文档是使用 32 --> 33 <name></name> 34 <!--项目地址--> 35 <url></url> 36 <!--项目描述--> 37 <description></dedication> 38 <!--开发人员列表--> 39 <developers></developers> 40 <!--许可证的信息--> 41 <licenses></licenses> 42 <!--组织信息--> 43 <organization></organization> 44 45 <!--依赖列表--> 46 <dependencies> 47 <dependency> 48 <groupId></groupId> 49 <artifactId></artifactId> 50 <version></version> 51 <type></type> 52 <!--依赖的范围 53 默认的范围是compile 54 provides 只在编译和测试时运行 55 runtime 56 test 57 system 58 import 59 --> 60 <scope>test</scope> 61 <!--设置依赖是否可选 62 默认是false,子项目是继承的 63 如果是true,子项目必须显示的引入该依赖 64 --> 65 <optional></optional> 66 <!--排除依赖传递列表--> 67 <exclusions> 68 <exclusion> 69 </exclusion> 70 </exclusions> 71 </dependency> 72 </dependencies> 73 74 <!--依赖的管理 75 这里面的依赖不会被引入实际依赖中,它是供子模块继承用的 76 --> 77 <dependencyManagement> 78 <dependencies> 79 <dependency> 80 </dependency> 81 </dependencies> 82 </dependencyManagement> 83 84 <build> 85 <!--插件列表--> 86 <plugins> 87 <plugin> 88 <groupId></groupId> 89 <artifactId></artifactId> 90 <version></version> 91 </plugin> 92 </plugins> 93 </build> 94 <!--子模块中对父模块pom的继承 --> 95 <parent></parent> 96 <!--用来聚合 --> 97 <modules> 98 <module></module> 99 </modules> 100 </project>
8.依赖的范围
...
9.依赖的传递
...
10.依赖的冲突
短路优先
先声明先优先
11.maven的聚合与继承
...