JavaWeb-02-Maven
1.概述
Maven 翻译为"专家"、“内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用
一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
最直接的:在开发过程可能有大量的jar包需要手动导入,maven可以帮我们自动导入和配置它们
2.Maven项目架构管理工具
核心思想:约定大于配置
下载和安装
配置环境变量
MAVEN_HOME maven目录
M2_HOME maven目录\bin
添加path: %MAVEN_HOME%\bin
配置阿里云镜像–下载提速
maven目录\conf\settings.xml
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
配置本地仓库
maven目录下新建maven-repo文件夹
maven目录\conf\settings.xml
<localRepository>/path/to/local/repo</localRepository>\
如:
<localRepository>E:\Environment\apache-maven-3.6.3\maven-repo</localRepository>
3.在IDEA中使用Maven
创建一个带模板的Maven项目
打开IDEA,创建一个mavenWeb项目
next
next
finish
本地仓库多了很多jar包
某些情况下需要修改Maven设置
idea项目创建成功后,先看一些Maven的配置(否则一些jar包可能会通过默认自带的Maven路径下到C盘!!!)
创建一个普通的Maven项目
什么都别勾
一个干净的Maven项目
与带Web应用模板的Maven项目的比较
标记文件夹功能
如果想在带模板的Maven项目中,将缺少的文件夹变成"特殊"的文件夹
或者在这里标记
4.在Idea中配置Tomcat
step1
step2
step3
step4解决警告
由于访问一个网站,需要默认指定一个文件夹的名字(必要的配置)
step5虚拟路径映射
step6启动Tomcat
可能的端口占用问题
这里可能出现端口1099被占用的情况
netstat -ano|findstr 1099 //这里会找到什么占用1099端口的pid
taskkill /f /pid 找到的值
成功:
5.Maven的侧边栏说明
6.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.cmy</groupId>
<artifactId>JavaWeb-01-Maven</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 项目的打包方式
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项目为例
百度搜索maven仓库,搜索相关依赖
在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.cmy</groupId>
<artifactId>JavaWeb-02-Maven02</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--具体依赖的jar包配置文件-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<!--Maven的高级之处在于它会帮你导入该jar包的其他依赖jar包-->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<!--以下依赖为maven仓库中Springwebmvc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.13.RELEASE</version>
</dependency>
</dependencies>
</project>
资源导出可能存在的问题
maven由于约定性极强,可能我们不符合约定的操作将使得我们写的配置文件无法被导出或者生效,解决方法:
在build配置resources
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
</build>