Maven★★★★★
声明
本文部分内容参考自其他作者原创文章,仅供个人学习留档,特此声明
参考文章链接
(1条消息) B站---【狂神说Java】JavaWeb入门到实战---笔记_夜里的雨的博客-CSDN博客_狂神说java笔记
(1条消息) maven本地仓库配置_木楚的博客-CSDN博客_maven配置本地仓库
(1条消息) IDEA Maven Helper插件(详细使用教程)_程序之大道至简的博客-CSDN博客_idea maven插件
(1条消息) 在IDEA中使用Maven详细教程_Blanche117的博客-CSDN博客_idea maven
(1条消息) 解决 IDEA 每次创建新的maven项目都需要重新配置的问题_泡锅的博客-CSDN博客_idea每次创建新项目都得重新配置?
(3条消息) Idea上配置Smart Tomcat_秋山澪与折木奉太郎的爱的博客-CSDN博客_smarttomcat
(3条消息) Idea查看Maven依赖树_拉丁卡特的博客-CSDN博客_idea maven 依赖树
【狂神说Java】JavaWeb入门到实战_哔哩哔哩_bilibili
Maven★★★★★
1、Maven项目架构管理工具
我为什么要学习这个技术?
- 在Javaweb开发中,需要使用大量的jar包,我们手动去导入;
- 如何能够让一个东西自动帮我导入和配置这个jar包。
由此,Maven诞生了!
我们目前用来就是方便导入jar包的!Maven的核心思想:约定大于配置
有约束,不要去违反。Maven会规定好你该如何去编写我们Java代码,必须要按照这个规范来
2、下载安装Maven
下载完成后,解压到下图位置
3、配置环境变量
在我们的系统环境变量中配置如下配置:
-
M2_HOME maven目录下的bin目录
-
MAVEN_HOME maven的目录
-
在系统的path中配置%MAVEN_HOME%\bin
-
测试Maven是否安装成功,保证配置完毕
4、阿里云镜像
-
镜像:mirrors
-
作用:加速我们的下载
-
国内建议使用阿里云的镜像
-
修改步骤
-
修改这里
-
修改mirrors框里边的mirror
修改为
<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>
-
5、本地仓库
使用 Maven 给我们带来的最直接的好处,就是统一管理jar 包,那么这些 jar 包存放在哪里呢?它们就在本地仓库中,默认地址位于 C:\Users\用户名.m2 目录下(当然也可以修改这个默认地址)。
实际上我们可以将本地仓库理解“缓存”,目的是存放jar包。开发项目时项目首先会从本地仓库中获取 jar 包,当无法获取指定 jar 包的时候,本地仓库会从 远程仓库(或 中央仓库) 中下载 jar 包,并“缓存”到本地仓库中以备将来使用。
远程仓库(中央仓库)是 Maven 官方提供的,可通过 http://search.maven.org/
来访问。这样一来,本地仓库会随着项目的积累越来越大。既然 Maven 安装了,那么本地仓库也就有了,默认路径在我们C盘目录下。这里不建议放到C盘,那么如何修改这个默认配置呢。
-
打开maven安装目录\conf\setting.xml文件
-
如下图所示修改路径
-
最后检查一下配置是否正确。输入命令:
mvn help:system
最后如果没有报错就说明配置好了。
如下图所示maven仓库的文件夹下会有很多的文件包自动出来。这些就是maven从中央仓库下载下来的文件
6、在IDEA中使用Maven(疑问已解决)
(1条消息) 在IDEA中使用Maven详细教程_Blanche117的博客-CSDN博客_idea maven
1.IDEA创建Maven项目
接下来是创建流程
在这里我用的是自己安装的maven,需要配置(maven的配置看上边链接内容,后边会讲)
如上图所示创建完成,下载的文件都存放在了maven仓库里边
E:\environment\Maven\apache-maven-3.8.5\maven-repo
2.Maven设置(存疑,已解决)
遇到一个很烦人的问题:总是还原回默认的IDEA 自带的 maven,导致每次新建maven都把文件下载到idea自带的maven库里边去了
这是为什么呢?
我们设置maven配置时,是通过 File -> Settings... -> Build,Execution,Deployment -> Build Tools -> Maven 的方式设置的;但是实际上,这样的设置方式,是仅对当前项目生效
解决方案:(1条消息) 解决 IDEA 每次创建新的maven项目都需要重新配置的问题_泡锅的博客-CSDN博客_idea每次创建新项目都得重新配置?
在下图位置设置才是针对所有新建项目的设置
又遇到一个问题我套
烦死了
按照上边的方法改变全局配置以后
每次新建maven必定卡死
不知道是为什么,烦~~
怎么尝试都不行,服了,就是一点 create idea立马卡死,一点反应都没有
网上的方法都不行,难顶~~
明儿再说吧,困死了~~
今天终于成功创建了maven项目
原因我也不是特别明确
参考了其他作者的很多文章
看了这篇文章以后我思考是不是之前项目没有彻底删除掉
(3条消息) (详细图示)IDEA彻底删除项目_TianXinCoord的博客-CSDN博客_idea删除项目
按着这个步骤我把之前idea卡死创建的所有maven项目从头到尾清理了一遍,然后重新创建
竟然成功了???......真不容易~~
创建成功以后观察本地仓库文件夹
终于......
第二次创建又卡死了...
我发现了
只有关闭当前项目以后才可以创建成功
.....
其他设置
至此,maven的配置告一段落......
7、创建普通Maven项目
这些只有在web应用下才会有(有点类似Tomcat)
对比一个架构完整的普通maven项目,我们给之前的web项目补充一下结构
-
在main文件夹下补充java和resources文件夹
-
方法一:先创建java和resources文件夹,再用IDEA的标记文件夹功能将其标记为源码目录和资源目录
-
方法二:直接创建为源码目录和资源目录(2022.1版本IDEA已经是自动标记了)
-
创建完成,如下图所示
-
8、在IDEA中配置Tomcat
配置步骤如下 (社区版要下载Tomcat插件)
(3条消息) Idea上配置Smart Tomcat_秋山澪与折木奉太郎的爱的博客-CSDN博客_smarttomcat
1.点击IDEA右上角的 Add Configuration
2.按照下图配置
3.启动Tomcat
4.启动完毕后点进网址
5.上边访问到的网站内容其实就是下图中index.jsp中的内容
9、pom 文件
pom.xml是Maven的核心文件
接下来通过代码注释简单了解一下pom文件
<?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.xy</groupId>
<artifactId>javaweb-001-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<!--packaging:项目的打包方式
jar:java应用
war:Java web应用
-->
<packaging>war</packaging>
<name>javaweb-001-maven Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<!--properties:配置-->
<properties>
<!--项目默认构建编码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--编码版本(可以手动改成1.8)-->
<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-001-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的特性是约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题,解决方案为:在 pom.xml 的< build >中配置< resources >,来防止我们资源导出失败的问题
<!--在pom.xml的<build>中配置<resources>,来防止我们资源导出失败的问题-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
10、IDEA 查看 Maven 依赖树
(3条消息) Idea查看Maven依赖树_拉丁卡特的博客-CSDN博客_idea maven 依赖树
1.Show Dependencies的图标,点击后即可查看当前maven模块的依赖结构图(社区版IDEA好像没有)
点开以后是这样的,依赖结构图会以当前maven模块为根节点,一般位于结构图的最下方,然后向上依次展开
其中需要注意到,图中的红色实线是冲突的,右键,排除,他就会自动在pom文件里面给exclud了。
另外我们还可以直接用ctrl+f快速搜索某个jar包的名称,这样就可以很清晰的查看出该jar包如何在maven中引入的。
2.使用Maven命令查看依赖树:mvn dependency:tree
3.使用 Maven helper 插件查看 pom jar 包依赖
11、解决一些问题
【狂神说Java】JavaWeb入门到实战_哔哩哔哩_bilibili P7
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律