文章目录
1、Maven是什么
Maven 的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)。开发人员只需做
一些简单的配置,就可以批量完成项目的构建、报告和文档的生成工作。
Maven的作用如下:
- Maven 统一集中管理好所有的依赖包,不需要程序员再去寻找。
- 对应第三方组件用到的共同 jar,Maven 自动解决重复和冲突问题。
- Maven 作为一个开放的架构,提供了公共接口,方便同第三方插件集成。程序员可以将自己需要的插件,动态地集成到 Maven,从而扩展新的管理功能。
- Maven 可以统一每个项目的构建过程,实现不同项目的兼容性管理。
2、Maven项目结构
一个使用Maven管理的普通的Java项目,它的目录结构默认如下:
项目的根目录a-maven-project
是项目名
它有一个项目描述文件pom.xml
存放Java源码的目录是src/main/java
存放资源文件的目录是src/main/resources
存放测试源码的目录是src/test/java
存放测试资源的目录是src/test/resources
所有编译、打包生成的文件都放在target
目录里。
这些就是一个Maven项目的标准目录结构。
所有的目录结构都是约定好的标准结构,我们千万不要随意修改目录结构。使用标准结构不需要做任何配置,Maven就可以正常使用。
3、安装Maven
官网下载地址:https://maven.apache.org/download.cgi
Windows版本:apache-maven-3.6.3-bin.zip
Linux版本:apache-maven-3.6.3-bin.tar.gz
4、配置Maven环境变量
我个人使用的是Linux
将安装的包解压后,由于我终端使用了oh-my-zsh,所有都在~/.zshrc里面配置环境变量
# maven path
MAVEN_HOME=/home/hs/文档/apache-maven-3.6.3
PATH=$MAVEN_HOME/bin:$PATH
export MAVEN_HOME PATH
然后 source ~/.zshrc 生效环境变量
输入mvn -v ,安装完成!
5、更换阿里云镜像
因为Maven是国外的,下载东西起来很慢,所以需要将镜像改为国内的阿里镜像
在conf目录下的settings.xml配置文件里面修改成阿里云镜像
在mirrors标签内添加以下配置
<!--阿里云镜像-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
6、建立本地仓库
先在apache-maven-3.6.3建立一个文件夹maven-repo
然后在setting.xml文件里将该仓库路径添加进去
7、IDEA中使用Maven
创建Maven项目,勾选模板类型 选择 maven-archetype-webapp
点击next
选择我们的Maven所在目录,修改的配置文件以及新建立的仓库目录路径
点击finish,提示BUILD SUCCESS代表完成!
8、在IDEA中配置Tomcat
点击右上角的Add Configuration… 添加Tomcat Server选择Local
由于访问一个网站我们需要指定一个文件名,就会产生Warning: No artifacts marked for deployment
点击Fix,选择第一个
这里Application context 可写可不写,不写就默认访问 localhost:8080
如果写了比如/hs 就会访问localhost:8080/hs 这个过程叫做虚拟路径映射
点击Run启动Tomcat ,就会访问webapp目录下的index.jsp,跳转到谷歌浏览器显示:Hello World!
9、Maven侧边栏的使用
idea右边有一个Maven侧边栏
- celan代表清理target
- compile代表编译
- test代表ces
- package代表打包
- install代表安装
Plugins里装有插件,Dependencies里面存放项目依赖,里面都是jar包
10、pom.xml
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>
<!-- 机构名称 项目名称 版本 以及打包方式(java打包是jar,javaWeb打包是war) -->
<groupId>com.hs_vae</groupId>
<artifactId>javaweb-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>javaweb-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.8</maven.compiler.source>
<maven.compiler.target>1.8</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-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>
项目如果想加入spring mvc依赖可以在dependencies标签里面添加
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
Maven强大之处在于它能帮我们导入这个 Spring mvc jar包所依赖的其他jar包
Maven由于它的约定大于配置哦,之后可能写的配置文件无法导出
比如java文件夹,它这里面只能写java,假如里面写xml文件它无法导出
解决该问题只需要在build标签里面加上
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>