这里写自定义目录标题
- 一 为什么要使用Maven
- 1 依赖管理 帮助管jar包
- 2 构建管理 脱离IDE进行运行
- 2.1 传统方式,就是打包成war包,然后放在tomacat上运行
- 2.2 一个程序的运行步骤
- 二 maven的工作机制
- 1 配置maven
- 1.1 关注 Maven 的核心配置文件:conf/settings.xml
- 1.2 配置环境变量
- 2 maven中的坐标概念
- 2.1 三个坐标,在jar库中可以定位到**唯一的jar包**
- 2.2 根据坐标到本地仓库中寻找到对应的jar包
- 2.3 修改默认maven配置
- 三 Maven核心概念
- 1 POM(Project Object Model)
- 2 约定的目录结构
一 为什么要使用Maven
jar包很难找全,jar包的版本可能不修改项目需求,百度的会有问题,不能使用,使用Maven可以自动下载jar包,实际的框架内部存在错综复杂的依赖关系
1 依赖管理 帮助管jar包
随着SpringBoot等框架的高集成的框架引入,一个项目往往需要上百个jar包
而如果用Maven来管理,只需要依据功能,配置个位数依赖
<!-- Nacos 服务注册发现启动器 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- web启动器依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 视图模板技术 thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2 构建管理 脱离IDE进行运行
2.1 传统方式,就是打包成war包,然后放在tomacat上运行
修改这个tomcat为本地的tomcat版本
点击add
添加成功后运行
2.2 一个程序的运行步骤
运行后,k8s动态分负载
自动化部署
二 maven的工作机制
1 配置maven
1.1 关注 Maven 的核心配置文件:conf/settings.xml
改本地仓库位置,创建一个本地文件夹
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>D:\maven-repository</localRepository>
配置阿里云镜像仓库,注释掉原来的位置
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
在profiles里面装jdk版本
<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>
1.2 配置环境变量
检测JDK版本:
C:\Users\20120>java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
检测JAVA_HOME的位置
C:\Users\20120>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.8.0_152
配置MAVEN_HOME
HOME一般是bin目录的上一级
PATH指向的都是bin目录
path里面添加
%MAVEN_HOME%\bin
配完看版本
C:\Users\20120>mvn -v
Apache Maven 3.9.1 (2e178502fcdbffc201671fb2537d0cb4b4cc58f8)
Maven home: D:\Java\apache-maven-3.9.1
Java version: 1.8.0_152, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_152\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
2 maven中的坐标概念
2.1 三个坐标,在jar库中可以定位到唯一的jar包
公司+项目:一个具体要实现的程序,比方说滴滴,或者QQ
比如说com.msb.maven
工程:其中的功能模块,比方说,前端,后端
版本号:QQ一直会有迭代版本
2.2 根据坐标到本地仓库中寻找到对应的jar包
生成maven工程
mvn是主命令,后面是子命令
archetype:调用的一个插件
generate:目标
mvn archetype:generate
直接回车
Define value for property 'groupId': com.xyt.maven
Define value for property 'artifactId': pro01-maven-java
Define value for property 'version' 1.0-SNAPSHOT: :
Define value for property 'package' com.xyt.maven: :
Confirm properties configuration:
groupId: com.xyt.maven
artifactId: pro01-maven-java
version: 1.0-SNAPSHOT
package: com.xyt.maven
Y: :
构建成功
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: D:\maven_workspace\spaceVideo
[INFO] Parameter: package, Value: com.xyt.maven
[INFO] Parameter: groupId, Value: com.xyt.maven
[INFO] Parameter: artifactId, Value: pro01-maven-java
[INFO] Parameter: packageName, Value: com.xyt.maven
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: D:\maven_workspace\spaceVideo\pro01-maven-java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15:10 min
[INFO] Finished at: 2023-05-04T12:06:21+08:00
[INFO] ------------------------------------------------------------------------
验证:
2.3 修改默认maven配置
POM文件修改
<!--跟标签,对当前工程进行配置管理-->
<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">
<modelVersion>4.0.0</modelVersion>
<!--从maven2就开始固定为4.0.0.0
表示当前xml所采用的标签结构
-->
<!--groupID 代表公司或组织开发的某个项目-->
<groupId>com.xyt.maven</groupId>
<!--代表项目的一个模块-->
<artifactId>pro01-maven-java</artifactId>
<!--
模块的版本号
-->
<version>1.0-SNAPSHOT</version>
<!--
打包成一个jar包
-->
<packaging>jar</packaging>
<!--取值pom,说明这个工程用于管理其他工程-->
<name>pro01-maven-java</name>
<url>http://maven.apache.org</url>
<!--propertise进行属性值的定义-->
<properties>
<!--
在构建过程中读取源码时候用的字符集
-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--配置一类,很多个具体依赖信息-->
<dependency>
<!--dependency 单个依赖信息,一个具体的依赖信息-->
<!--gav,三标签
scope 依赖的范围
-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
三 Maven核心概念
1 POM(Project Object Model)
项目对象模型,类似于DOM操作是js的核心,POM是MAVEN的核心
模型化思想,把地球想象成一个地球仪去分析
学maven,就是学怎么配置POM文件
2 约定的目录结构
maven固定生成的一个目录结构,是所有POM的祖宗,超级POM配置的,程序运行里面的,就是单一的POM
约定的意义就是实现项目搭建的统一与自动化,形成一个固定流程
开发领域技术发展的趋势是,约定大于配置,配置大于编码