本篇文章仅为Maven学习随记
一:
maven介绍与环境搭建:
maven是基于项目对象模型(POM),可以通过一小段描述信息来管理
项目的构建、报告和文档的软件项目管理工具。
下载好后:
①:bin目录下面包含mvn的运行脚本
②:boot目录包含了一个类加载器的框架
③:conf是配置文件的目录
④:lib是maven运行时所需要的类库,除了自身的还包含了maven运行时所依赖的第三方的类库。
二:
maven目录结构:
src
-main
-java
-package
-test
-java
-package
resources
maven中的pom.xml标签含义:
①:groupId的值就是项目的包名
②:artifactId的值就是模块名
三:
3.1:
maven常用命令:
mvn -v :查看maven版本
compile:编译
test:测试
package:打包
clean 删除target
install:安装jar包到本地仓库中。
3.2:
自动创建目录骨架:
archetype插件:用于创建符合maven规定的目录骨架
如:css样式文件 images图片
maven规定:
-src
-main
-java
-主代码
-src
-test
-测试代码
创建目录的两种方式
1:archetype:generate 按照提示进行选择
2:archetype:generate -DgroupId=组织名,公司网址的反写+项目名
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackage=项目所在的包
3.3:maven中的坐标和仓库:
坐标
构件
坐标:在maven世界中,任何一个依赖、插件、项目构件的输出都可以被称之为构件。
构件通过坐标作为唯一的标识。
如(地址、电话)
比如:
<dependency>
<groupId>com.imooc.maven01</groupId>
<artifactId>maven01-model</artifactId>
<version>0.0.1SNAPSHOT</version>
</dependency>
就是一个坐标
建议:在创建maven项目时,java的包名应该与pom.xml中定义的groupId、artifactId相吻合
这样看起来更加清晰,符合逻辑,并且方便搜索。
仓库
本地仓库和远程仓库(中央全球仓库)
中央仓库地址:http://search.maven.org/
镜像仓库
更改仓库位置
3.4 在eclipse中安装maven插件以及创建maven项目
3.5 maven的生命周期和插件
命令:clean、compile、test、package、install
完整的项目构建过程包括:
清理、编译、测试、打包、集成测试、验证、部署。
maven生命周期:
clean 清理项目
pre-clean 执行清理前的工作
clean 清理上一次构建生成的所有文件
post-clean 执行清理后的文件
default 构建项目(最核心)
compile、test、package、install
site 生成项目站点
pre-site 在生成项目站点前要完成的工作
site 生成项目的站点文档
post-site 在生成项目站点后要完成的工作
site-deploy 发布生成的站点到服务器上。
3.6: pom.xml常用元素介绍:
<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/xsd/maven-4.0.0.xsd">
<!--指定了当前pom的版本-->
<modelVersion>4.0.0</modelVersion>
<groupId>反写的公司网址+项目名</groupId>
<artifactId>项目名+模块名</artifactId>
<!--第一个0表示大版本号
第二个0表示分支版本号
第三个0表示小版本号
0.0.1
snapshot快照
alpha内部测试
beta公测
Release稳定
GA正式发布
-->
<version></version>
<!--默认是jar
war zip pom
-->
<packaging></packaging>
<!--项目描述名-->
<name></name>
<!--项目地址-->
<url></url>
<!--项目描述-->
<description></description>
<!--开发人员信息-->
<developers></developers>
<!--许可证信息-->
<licenses></licenses>
<!--组织人员信息-->
<organization></organization>
<dependencies>
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<type></type>
<!--只在测试范围内有用-->
<scope>test</scope>
<!--设置依赖是否可选 true/false,默认为false,子项目默认是继承的。true,子项目必须默认显示的引入该依赖-->
<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>
<!--聚合运行多个的maven项目,原来是一个模块,现在可以多个模块进行编译-->
<modules>
<module> </module>
</modules>
</project>
3.7 maven依赖范围
maven中三种classpath:
1:编译 2:测试 3:运行
例如:
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
表示junit用在测试的项目中,存在于测试的范围
依赖范围用来控制依赖与三种classpath的关系的。
Dependency Scope:
1:compile:默认范围,编译测试运行都有效
2:provided:在编译和测试时有效,在最后运行时无效。
3:Runtime:在测试和运行时有效。
4:test:只在测试范围有效。
5:system:与本机系统相关联,可移植性差。
6:import:导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置。
3.8:maven的依赖传递
见项目:hongxing-bge hongxing-nage hongxing-shanji
3.9:maven的依赖冲突
1:短路优先
A->B->C->X(jar)
A->D->X(jar)
2:先声明先优先
如果路径长度相同,则谁先声明,先解析谁
3.10:maven的聚合和继承
4.1 使用maven构建web项目
5.1 课程总结
1:maven下载和环境搭建:如何在windows下安装maven
2:maven目录骨架的说明:
①:主代码存放路径:
-src
-main
-java
主代码
②:测试代码存放路径:
-src
-test
测试代码
pom.xml用于管理项目依赖和构建过程
3:常用的maven命令
4:仓库和坐标
5:在eclipse安装和创建maven项目
6:生命周期、pom.xml以及依赖、聚合、继承
7:eclipse中创建web项目和jetty插件的安装。
致自己:仅仅了解maven相关知识概念,之后还需通过实践熟练maven的使用。