1、maven项目的目录结构
src
-main
-java
-package
-test
-java
-package
resources
2、maven相关命令
mvn -v 查看maven版本
compile 编译
test 测试
package 打包
clean 删除target
install 安装jar包到本地仓库中
3、mvn install
但一个项目需要使用另一个项目中的类时,我们需要再另外一个项目下执行mvn install 命令
然后在本项目中的pom.xml文件中添加另一个项目的依赖m,并对在需要引入类的地方导入该类。
4、自动创建目录骨架的两种方式
(1) 使用 mvn archetype:generate 按照提示进行选择
choose a number: 6:6
Define value for property 'groupId': com.imooc.maven03
Define value for property 'artifactId': maven03-service
Define value for property 'version' 1.0-SNAPSHOT: : 1.0.0SNAPSHOT
Define value for property 'package' com.imooc.maven03: : com.imooc.maven03.service
Y: :y
(2) 使用 mvn archetype:generate -DgroupId=com.imooc.maven04 -DartifactId=maven04-demo -Dversion=1.0.0SNAPSHOT -Dpackage=com.imooc.maven04.demo
一次性设置所有的属性
-DgroupId=组织名,公司网址的反写+项目名
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所存在的包名
5、坐标与构建
坐标
构建
<dependency>
<groupId>com.imooc.maven01</groupId>
<artifactId>maven01-model</artifactId>
<version>0.0.1SNAPSHOT</version>
</dependency>
仓库
本地仓库和远程仓库
镜像仓库
更改镜像仓库 在 settings.xml 文件中
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
更改仓库的位置(在settings.xml)
<localRepository> 你想存放的位置 </localRepository>
6、在Eclipse安装maven插件以及创建maven项目
配置JDK
配置JRE为JDK中的JRE
配置settings.xml到Eclipse中
创建maven项目
7、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 发布生成的站点到服务器上
8、pom.xml常用元素截介绍
<!-- 指定当前pom的版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 坐标信息 -->
<groupId>com.imooc.hi</groupId> <!-- 总项目标识 反写公司网址+项目名 -->
<artifactId>hi</artifactId> <!-- 模块的标识,实际项目的一个模块 项目名+模块名 -->
<version>0.0.1-SNAPSHOT</version> <!-- 第一个0表示大版本号,第二个0表示分支版本号,第三个0表示小版本号, 0.0.1snapshot 快照 ,alpha 内部测试 , beta 公测 , Release 稳定 , GA正式发布 -->
<packaging>jar</packaging> <!-- 打包方式, 默认是jar ,还有 war zip pom-->
<name>hi</name> <!-- 项目描述名 -->
<url>http://maven.apache.org</url> <!-- 项目地址 -->
<description></description> <!-- 项目描述 -->
<developers></developers> <!-- 开发人员的列表 -->
<licenses></licenses> <!-- 许可证 -->
<organization></organization> <!-- 组织信息 -->
<!-- 依赖列表 -->
<dependencies>
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<type></type>
<scope>test</scope> <!-- 依赖范围 -->
<optional></optional> <!-- 设置依赖是否可选 , true 和 false -->
<exclusions>
<exclusion>
</exclusion>
</exclusions> <!-- 排除依赖传递列表 -->
</dependency>
</dependencies>
<dependencyManagement> <!-- 依赖管理 -->
<dependencies>
<dependency></dependency>
</dependencies>
</dependencyManagement>
<build>
<!-- 插件列表 -->
<plugins>
<plugin>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</plugin>
</plugins>
</build>
<!-- -->
<parent></parent>
<!-- 聚合多个模块 -->
<modules>
<module></module>
</modules>
9、依赖管理
<!-- 依赖列表 -->
<dependencies>
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<type></type>
<scope>test</scope> <!-- 依赖范围 -->
<optional></optional> <!-- 设置依赖是否可选 , true 和 false -->
<exclusions> <!-- 排除依赖传递列表 -->
<exclusion>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- 重点说下scope -->
scope的属性有: compile 默认范围,编译测试运行都有效
provided 在编译和测试时有效
runtime 在测试和运行时有效
test 只在测试时有效
system 与本机系统相关联,可移植性差
import 导入的范围,它只使用在dependencyManagement中,表示从其它的pom中导入dependecy的配置
10、依赖传递
project1 依赖 project2 依赖 project3
-----> ----->
1、首先在project2 ,增加依赖project3的坐标
2、编译project2,会发现出错,因为在仓库中找不到project3,因此需要将project3安装到本地仓库中,在project3中运行 package
3、鉴于project3,我们应该先将project2安装到本地仓库
4、在project1中增加依赖project2,编译project1.
5、此时我们可以看到,project1依赖了project2同时还依赖了project3,这就是依赖传递
6、如果要排除project1对project3的依赖,可以在填写依赖project2处填写
<exclusions> <!-- 排除依赖 -->
<exclusion>
<!-- 填写project3的坐标 -->
</exclusion>
</exclusions>
此时可以发现project1不在依赖project3
11、显示的的jdk版本与实际版本不一样,可以在settings.xml文件中添加如下代码(找到profile)
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
12、依赖冲突
原则:
1、短路优先
A->B->C->X(jar)
A->D->X(jar) 优先选择这个
2、先声明先优先
13、maven的聚合和继承
一、聚合
现有project1 project2 project3 三个maven项目
1、首先创建一个项目 project
2、在project中的pom.xml文件中添加如下代码:
<modules>
<module>../project1</module>
<module>../project2</module>
<module>../project3</module>
</modules>
并修改<packaging>jar</packaging>为<packaging>pom</packaging>
二、继承
(略)
14、使用maven构建web项目
详细创建过程 点击这里 https://www.imooc.com/video/8684
15、总结