五、Maven
为什么要学习这个技术?
-
在Java Web开发中,需要使用大量的jar包,我们手动去导入;
-
如何能够让一个东西自动帮我们导入和配置这个jar包;
由此,Maven诞生了!
5.1 Maven项目架构管理工具
我们目前用来就是方便导入jar包的!
Maven的核心思想:约定大于配置
-
有约束,不要去违反
Maven会规定好该如何去编写我们的java代码,必须要按照这个规范来
5.2 下载安装Maven
下载完成后解压即可
5.3 配置环境变量
在我们的系统环境变量中
配置如下配置:
-
M2_HOME maven目录下的bin目录
-
MAVEN_HOME maven的目录
-
在系统的path中配置 %MAVEN_HOME%\bin
测试Maven是否安装成功,保证必须配置完毕!
5.4 阿里云镜像
-
镜像:mirrors
-
作用:加速下载
-
-
国内建议使用阿里云的镜像
<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>
5.5 本地仓库
在本地的仓库,远程仓库;
建立一个本地仓库:
<localRepository>D:\Program Files\Apache Software Foundation\apache-maven-3.8.2\maven-repo</localRepository>
5.6 在IDEA中使用Maven
-
启动IDEA
-
创建一个Maven项目
-
等待项目初始化完毕
-
观察maven仓库中多了什么东西
-
IDEA中的Maven设置
IDEA项目创建成功后,看一眼Maven的配置
自动导入源码可选但没必要,选中自动导入文档可能导致内存占用有点大
-
到这里,Maven在IDEA中的配置和使用就OK了!
5.7 创建一个普通的Maven项目
这个是只有在webapp下才会有!
5.8 标记文件夹功能
-
直接右击目标文件夹对文件夹进行标记修改
-
利用Project Structure对项目内的文件夹进行
5.9 在IDEA中配置Tomcat
解决警告问题
为什么会有这个问题:
-
必须要的配置:我们访问一个网站,需要指定一个文件夹的名字
5.10 pom文件
pom.xml是Maven的核心配置文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <!--Maven版本和头文件--> 4 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 6 <modelVersion>4.0.0</modelVersion> 7 8 <!--这里就是刚才配置的GAV--> 9 <groupId>org.example</groupId> 10 <artifactId>javaweb-01-maven</artifactId> 11 <version>1.0-SNAPSHOT</version> 12 <!--Package:项目打包的方式 13 jar:Java应用 14 war:Javaweb应用 15 --> 16 <packaging>war</packaging> 17 18 <!--配置--> 19 <properties> 20 <!--项目的默认构建编码--> 21 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 22 <!--编码版本--> 23 <maven.compiler.source>1.7</maven.compiler.source> 24 <maven.compiler.target>1.7</maven.compiler.target> 25 </properties> 26 27 <!--项目依赖--> 28 <dependencies> 29 <!--具体依赖的jar包配置文件--> 30 <dependency> 31 <groupId>junit</groupId> 32 <artifactId>junit</artifactId> 33 <version>4.11</version> 34 <scope>test</scope> 35 </dependency> 36 </dependencies> 37 38 <!--项目构建使用的东西--> 39 <build> 40 <finalName>javaweb-01-maven</finalName> 41 <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> 42 <plugins> 43 <plugin> 44 <artifactId>maven-clean-plugin</artifactId> 45 <version>3.1.0</version> 46 </plugin> 47 <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --> 48 <plugin> 49 <artifactId>maven-resources-plugin</artifactId> 50 <version>3.0.2</version> 51 </plugin> 52 <plugin> 53 <artifactId>maven-compiler-plugin</artifactId> 54 <version>3.8.0</version> 55 </plugin> 56 <plugin> 57 <artifactId>maven-surefire-plugin</artifactId> 58 <version>2.22.1</version> 59 </plugin> 60 <plugin> 61 <artifactId>maven-war-plugin</artifactId> 62 <version>3.2.2</version> 63 </plugin> 64 <plugin> 65 <artifactId>maven-install-plugin</artifactId> 66 <version>2.5.2</version> 67 </plugin> 68 <plugin> 69 <artifactId>maven-deploy-plugin</artifactId> 70 <version>2.8.2</version> 71 </plugin> 72 </plugins> 73 </pluginManagement> 74 </build> 75 </project>
Maven自动导入jar包:
-
先从Maven仓库中找到要导入的包对应的Maven语句
-
复制后粘贴到项目中,Maven就会自动导包
Maven由于它的约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题,解决方案:
1 <!--在build中配置resources,来防止我们资源导出失败的问题--> 2 <build> 3 <resources> 4 <resource> 5 <directory>src/main/resources</directory> 6 <excludes> 7 <exclude>**/*.properties</exclude> 8 <exclude>**/*.xml</exclude> 9 </excludes> 10 <filtering>false</filtering> 11 </resource> 12 <resource> 13 <directory>src/main/java</directory> 14 <includes> 15 <include>**/*.properties</include> 16 <include>**/*.xml</include> 17 </includes> 18 <filtering>false</filtering> 19 </resource> 20 </resources> 21 </build>
5.11 IDEA操作
可用右上角的目录树按钮查看Maven中jar包的联系关系图