JavaWeb -> 5. Maven
5.0 前言
- 为什么要学习Maven?
- 在JavaWeb开发中,需要使用大量的jar包,需要手动导入;
- 如何能够让一个东西自动帮我们导入和配置这些jar包?
- 由此Maven诞生了,还有Gradle构建工具
5.1 Maven项目架构管理工具
- 目前用Maven就是方便导入jar包的
- Maven核心思想:约定大于配置
- 有约束,不要去违反
- Maven会规定好你该如何去编写我们的Java代码,必须要按照这个规范来写
5.2 下载安装Maven
- 官网https://maven.apache.org/
- 下载完解压即可
5.3 配置环境
- 配置M2_HOME:D:\apache-maven-3.8.1\bin
- 配置MAVEN_HOME:D:\apache-maven-3.8.1
- 配置Path中的变量 %MAVEN_HOME%\bin
- 配置完成后mvn -version
5.4 阿里云镜像
-
镜像:mirrors
- 作用:加速下载
-
国内建议使用阿里云的镜像
-
在settings.xml文件中找到
<mirrors> </mirrors>
标签对,进行修改:<mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>https://maven.aliyun.com/repository/public </url> </mirror>
-
5.5 本地仓库
-
本地仓库 远程仓库
-
建立一个本地仓库:localRepository
<localRepository>D:\apache-maven-3.8.1\maven-repo</localRepository>
5.6 在IDEA中使用Maven
创建一个Maven Web项目,具体步骤如下:
- 新建项目,选择Maven
- 组名、位置等信息
- 配置文件位置
- 等待项目初始化完毕
- 设置
创建一个不同的Maven项目
- 新建项目,不勾选Create from archetype
- 组名,项目名等信息
- 配置maven
- 完成,注意观察Project目录
在原来的Maven Web项目中完善项目的标准结构
main->New Folder->java
main->New Folder->resources
src->New Folder->test
test->New Folder->java
test->New Folder->resources
5.7 在IDEA中配置Tomcat
- 解决警告问题
- 启动Tomcat
5.8 pom.xml文件
- maven的核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!--Maven版本和头文件-->
<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>
<!--这里是配置的GAV-->
<groupId>com.ano</groupId>
<artifactId>javaweb-01-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<!--packaging:项目的打包方式
jar:java应用
war:JavaWeb应用
-->
<packaging>war</packaging>
<name>javaweb-01-maven Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<!--配置-->
<properties>
<!--项目的默认构建编码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--编码版本-->
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<!--项目依赖-->
<dependencies>
<!--具体依赖的jar包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<!--项目构建用的东西-->
<build>
<finalName>javaweb-01-maven</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
- Maven的强大之处在于,可以帮我们导入这个Jar所依赖的其他jar包
Maven可能会遇到的问题
- 由于Maven约定大于配置,可能会遇到我们自己写的配置文件,无法被导出或者生效的问题
- 解决办法:在pom.xml中的build下,配置resources节点,以防止资源导出失败的问题
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.xml</exclude>
</excludes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
5.9 IDEA操作
- Maven中jar包的关系树