对于Maven核心文件pom初步认知;命令行中使用不方便,我们还是需要放到图形化界面IDEA中来使用。
解读pom的xml文件
Maven工程的核心配置文件
<!--project标签:根标签,表示对当前工程进行配置、管理-->
<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 标签:从Maven2开始就固定是4.0.0-->
<!--代表当前pom.xml所采用的标签结构-->
<modelVersion>4.0.0</modelVersion>
<!--坐标信息 -->
<!--groupId 标签:坐标的三个向量之一,代表公司或组织,开发的某一个项目-->
<groupId>com.atguigu.maven</groupId>
<!--artifactId 标签:坐标向量之一:代表项目下的某一个模块-->
<artifactId>pro01-maven-java</artifactId>
<!--version标签:坐标向量之一:代表当前模块的版本-->
<version>1.0-SNAPSHOT</version>
<!--packaging 标签:打包的方式-->
<!--取值jar:生成jar包,说明这是一个Java工程-->
<!--取值war:生成war包,说明这是一个Web工程-->
<!--取值pom:说明这个工程是用来管理其他工程的工程。将来创建父工程,管理子工程-->
<packaging>jar</packaging>
<name>pro01-maven-java</name>
<!--maven官网地址-->
<url>http://maven.apache.org</url>
<!--properties标签:在Maven 中定义属性值;可以是Maven提供,也可以是自己自定义-->
<properties>
<!--在构建过程中读取源码使用的字符集,采用UTF-8-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!--dependencies中可以包含好多dependency-->
<!--dependencies标签:配置具体依赖信息,可以包含多个dependency子标签-->
<dependencies>
<!--dependency标签:配置一个具体的依赖信息-->
<dependency>
<!--坐标信息:导入哪个jar包,配置他的坐标信息即可-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!--scope(范围)标签:配置当前依赖的范围,对于导入jar包有一定影响-->
<scope>test</scope>
</dependency>
</dependencies>
</project>
创建父工程(在IDEA中创建Java工程)
各个不同版本的IDEA版本略有差异,高版本自动化程度高一点。
创建一个Maven工程的步骤
配置本地仓库和本地Maven版本
第一次创建,需要指定配置本地的Meven版本,并指定本地仓库。
最好配全局配置一下,这样很麻烦。
创建子工程后IDEA会自动添加 packaging pom
创建子工程之后,在main文件夹中添加java文件夹书写java类
在src下添加test文件夹,测试类。
三种方式执行Maven命令
第一种方式:侧边栏Maven单击命令
可以执行Maven的一些maven命令
第二种方式:命令行手动输入
第二种方式的好处就是可以一次性运行多个命令
如果有需要,还可以给命令后面附加参数:
mvn clean install -Dmaven.test.skip=true
可以 跳过测试
# -D 表示后面要附加命令的参数,字母 D 和后面的参数是紧挨着的,中间没有任何其它字符
# maven.test.skip=true 表示在执行命令的过程中跳过测试
mvn clean install -Dmaven.test.skip=true
命令行环境下运行命令
在IDEA中创建Web工程
我是用的是2022版本,相对于之前版本来说更只能,只需要选择模板创建web工程并补充需要的文件就可以了。
如果 webapp 没有激活,可以重新添加Web项目,放在对应路径 \src\main\webapp\
下就可以了
使用插件快速创建
在学习到ssm整合框架的时候,我知道有一款非常好的插件可以快速搭建web工程
JBLJavaToWeb
搜索下载即可
基于SpringMVC手动添加web工程
web工程需要在pom文件中添加打包方式为war
在main路径下添加webapp和web.xml,先添加webapp
注意手动添加web.xml需要调整 WEB-INF 前路径为 当前工程\src\main\webapp\
第三方依赖信息
第三方信息如何获取,有两种思路
- maven提供的查询官网 https://mvnrepository.com
查询需要寻找的依赖jar包,复制依赖就可以
- maven插件 maven-search
在插件市场中下载安装即可
然后再Tools中找到使用就可以
借由SSM框架整合,发现之前学习Maven自己认识到很多地方知识掌握不够全面,针对于本篇Maven,我已经做了一定的修改,但是基于内容,不方便再多添加一篇文章了,所以说补一补之前没有补充完整的地方。
依赖继承
我们再当前模块下再创建一个模块,pom文件中会自动生成 <parent>
指明我们的父工程。子工程的gv属性也继承于父工程。
如果我们让父工程导入依赖,那么子工程继承后会继承一些并不适用的依赖,导致jar包增大。我们可以让父工程中声明依赖,但是不导入依赖,对应的子工程中使用依赖就导入依赖。
父工程中声明依赖
父工程pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>
<groupId>com.atguigu</groupId>
<artifactId>maven-pom-parent-06</artifactId>
<version>1.0-SNAPSHOT</version>
<!--父工程:不打包,也不写代码 ;声明打包方式为pom-->
<packaging>pom</packaging>
<modules>
<module>shop-user</module>
<module>shop-order</module>
</modules>
<!--
选择该模块作为父工程,父工程主要来做配置的继承信息,父工程中是不写代码的
-->
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!--声明版本信息-->
<!--dependencies导入依赖,所有子工程都有相应的依赖-->
<dependencies></dependencies>
<!--dependencyManagement 声明依赖信息,不会下载依赖!可以被子工程继承版本号-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.15.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
对应子工程继承后导入需要使用的依赖。
子工程pom.xml
<!--子工程中想要继承父工程的core信息,子工程中如果还写版本会覆盖-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
</dependencies>
需要注意的是父工程中只需要声明,所以需要使用 <dependencyManagement>
包裹若干个依赖,而不是直接使用<dependencies>
。
实战项目搭建
附上视频,提供我的搭建思路
我书写这篇文章的初衷就是总结学习的进度,遗忘之际可以拿出来翻看,如有不对的地方还望指正,多多海涵。
[...]基于SpingMVC的学习笔记配置web.xml手动创建maven工程的操作在基于SpringMVC手动添加web工程中添加之后我们需要配置SpringMVC的web.xml有关servlet配置可以查看让请求对应类的配置如果使用JDK17+Tomcat8要注意导入mvc为5.3.17(之前我使用5.3.1报错,我在这里找了好久问题,还换了一个模块重写。。) <!-- Spri[...]