Maven
约 1214 字大约 4 分钟
maven项目管理工具
- 1. maven概述
- 2. maven项目构建过程
- 3. maven项目依赖管理
- 4. maven仓库
- 5. maven工程目录
- 6. 常用maven命令
- 7. maven概念模型内容
- 8. pom.xml基本配置
- 9. 依赖管理
- 10. 依赖范围对传递依赖的影响
- 11. 依赖传递与依赖冲突解决
1. maven概述
- apache下的项目管理工具,开源java项目
- 一步构建项目:项目构建过程标准化,一个命令完成、编译、测试、运行、打包、部署、运行(tomcat:run)
- 依赖管理:不用手动导入jar包,在pom.xml定义坐标自动从maven仓库中下载,不易出错
- 跨平台 window 和 linux都可以使用
- 遵循规范,提高开发效率,降低项目维护成本
2. maven项目构建过程
- 清理(clean)、编译(commpile)、测试、报告、
- 打包(package:java→jar、web→war)、部署
- 运行mavenLtomcat:run、tomcat7:run
- 一个命令完成构建、运行、方便快捷,每个构建阶段规范,有利于团队开发
3. maven项目依赖管理
- 通过pom.xml对jar包版本同一管理,避免冲突、可以从maven仓库中下载jar包
4. maven仓库
- 优先查找本地仓库、没有查远程(可以私服)、最后中央、查到自动下载到本地仓库保存
- 本地仓库(默认:${usr.dir}/.m2/repository)
- 远程仓库:互联网或局域网内
- 中央仓库:http://repo1.maven.org/maven2、maven团队自己维护
- 配置本地仓库
F:\apache-maven-3.5.3\conf\setting.xml
<localRepository>F:\repository</localRepository>
5. maven工程目录
6. 常用maven命令
- mvn compile 将src/main/java下的 文件编译为class文件 并放到target/classes目录下,不编译测试的代码
- mvn test 执行src/test/java的单元测试类
- mvn clean 删除target目录的内容(包括打包结果和编译结果),清理后编译
- mvn package java工程→jar、web工程→war包,默认jar包名称:artificild-version.jar
- mvn install:将maven打成jar包或者war包发布到本地仓库(模块开发的时候使用)安装到仓库/groupId/artifacid/version
- tomcat:run 一键启动
7. maven概念模型内容
- 项目对象模型:pom.xml定义项目坐标、依赖、信息、插件目标
- 标准集合:标准目录结构、生命周期阶段、依赖管理有标准的坐标定义
- 项目生命周期:清理(clean)、编译(commpile)、测试(test)、报告、打包(package:java→jar、web→war)、部署 通过命令实现生命周期
- 依赖管理系统:对jar包同一管理
- 运行定义在生命周期阶段中插件的目标的逻辑:maven管理项目生命周期过程都是基于插件完成的
8. pom.xml基本配置
<project>:文件的根节点
<modelVersion>:pom.xml使用的对象模型版本
<groupId>:项目名称:组织名+项目名。类似包名
<artifactId>:模块名,子项目名或模块名称
<version>:当前版本号snapshot快照版本非正式版本release为正式发布版
<packaging>:打包类型jar、war、pom父工程使用这个设置与package有关
<name>:项目的显示名,常用于maven的生成文档
<description>:项目描述,常用于maven的生成文档
<dependencies>:项目依赖构件配置,配置项目依赖构件的坐标
<build>:项目构建配置,配置编译,运行插件等
9. 依赖管理
- 依赖范围(添加依赖jar包格式)
- 依赖war包、依赖模块\依赖范围由强到弱的顺序是:compile>provided>runtime>test
10. 依赖范围对传递依赖的影响
11. 依赖传递与依赖冲突解决
- 调解原则
- 第一声明者优先原则:谁先声明谁先依赖
- 路径近者优先原则:谁的依赖层小,谁先被依赖
- 排除依赖
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.3.24</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>
- 锁定版本:配置了锁定版本必须相应地配置依赖,但不需要指定版本
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-bean</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
12. maven私服(了解)自己看文档
13. springboot设置为windows服务 maven插件
<plugin>
<groupId>cn.joylau.code</groupId>
<artifactId>joylau-springboot-daemon-windows</artifactId>
<version>1.1.RELEASE</version>
<executions>
<execution>
<id>make-win-service</id>
<phase>install</phase>
<goals>
<goal>make-win-service</goal>
</goals>
</execution>
</executions>
<configuration>
<vmOptions>
-Xbootclasspath/a:config/ -Xmx1024m -Xms512m -XX:MaxPermSize=256m -XX:PermSize=128m -Dfile.encoding=UTF-8 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=22221
</vmOptions>
<arguments>
</arguments>
</configuration>
</plugin>