目录
前言
1.在上一篇博客中,https://blog.csdn.net/qq_44886213/article/details/123048197https://blog.csdn.net/qq_44886213/article/details/123048197 学习的是Windows系统下maven环境的搭建,搭建好了以后在任何集成开发环境(比如eclipse、IDEA)中都可以使用maven了,同理,我们的Tomcat也是。本篇博客要学的是如何在IDEA中使用maven和Tomcat。
2.IDEA(从哪个版本开始集成的我也没了解过哈)中已经集成了MAVEN了,为什么还要自己配置maven?
主要就是3个原因,
- 一个是让maven从IDEA中独立出来,便于和其他IDE结合在其他IDE中开发
- 二就是便于学习maven(如何配置镜像源、如何建立本地仓库)
- 三是因为自带的maven能够配置的东西非常少。
3.
通过阅读官方手册,了解到IDEA的一些内置工具,有maven、Gradle等,没有jdk和Tomcat
一、在IDEA中对maven进行设置
1. 利用模板创建一个maven项目
新建一个maven项目,选择webapp这个模板。
这一步只需要输入项目名Name就好
接下来进行3个重要的配置,将IDEA默认使用的自带的MAVEN改成刚才下载的。
按照上图中的要求更改,然后finish就可以了
2.自动导入jar包
然后进入maven项目的页面,自动开始从阿里云镜像网站下载jar包(auto-import)
出现下图中的BUILD SUCCESS就成功了。
我们再来看利用模板构建的目录结构是什么样子的:
发现,和Tomcat中的webapps目录是差不多的。
3. 在IDEA的settings中进行maven的设置
首先MAVEN_HOME、配置文件路径、本地仓库路径已经配置好了。
PS:这里要注意的是,如果在新建项目的阶段没有让你选择maven路径,那么IDEA可能会自动把MAVEN_HOME改成自带maven的安装路径。每次新建maven项目后,都应该来settings这里检查一下。 这个坑下面就会遇到。这个坑的最好解办法下面会说。
到此为止,在IDEA中对于maven的设置就结束了。
接下来还有一些其他关于maven要更改/注意的地方
4.maven项目目录的更改
我们刚才是利用模板创建的maven项目,现在我们不使用模板创建一个干净的maven项目,看一下目录结构有什么区别。
然后我们等待右下角两个process跑完。
attention!发现了之前说过的问题。这次maven项目进行auto-import的时间格外长,感觉有点不对劲,一看发现下载的网址不是从阿里云镜像远程下载,也不是直接用的本地仓库已经下载好的,而是跑去下载默认的国外源了。再通过settings点开一看,果然新项目自己默认使用了自带的maven(啊这。。。明明上次在IDEA中配置过了的),使用的自带的配置文件(没有换上阿里云镜像)和默认的repo,所以又重新往C盘的本地仓库下东西,而且特别慢。
赶紧停掉了右下角的两个process,这样会出现右边的问题:没有下载好插件。
解决:在settings给他改过来。
apply后点击OK,这个错误就解决了。
那么下次再创建一个纯净的maven项目时,settings中是什么样子呢?答案是,IDEA 2020还是会给你使用他自带的maven。。。
这个问题的彻底解决办法:
解决新版本idea(2020)每次创建新项目使用默认maven仓库,改成自己的Maven仓库的的设置_QZP51ZX的博客-CSDN博客_每次创建maven新工程仓库都会修改为默认
差点跑偏了,我们新建一个纯净的maven项目的目的是看一个它的目录结构和用模板去建的有什么区别。
可以看到相比于纯净的maven项目,用模板创建的maven项目少了三个文件夹:
- Java:放置Java源文件
- resources:放置配置文件
- test下的Java文件夹:测试用(这个暂时先用不到)
同时可以发现,纯净的maven项目的pom.xml文件很短。
接下来只需要在模板建立的项目的main文件夹下加入java和resources文件夹,然后删掉这个纯净的maven项目就可以了。
右击main文件夹,新建文件夹,输入名字即可。
如果新建的java和resources文件夹不是下图这样的,而是灰色的话
就需要mark一下,操作如下图所示
5.maven侧边栏介绍
6.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>
<!-- 我们配置的GAV -->
<groupId>org.example</groupId>
<artifactId>javaweb-01-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 打包方式 -->
<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>
</build>
</project>
需要注意的就是<dependencies>这个标签,以后我们项目需要什么jar包,就不用手动下载了,在pom的 <dependencies>标签内加一个<dependency>,Maven就会帮我们去下载(侧边栏能看到依赖的更新),并且maven的强大之处在于,还可以帮我们下载这个jar包依赖的所有jar包。
举个例子,在这个maven远程仓库中 https://mvnrepository.com/,你可以搜索自己想要的jar包
会给出对应的<dependency>标签,粘到自己项目pom文件的<dependencies>下就行了。
虽然我们是在远程仓库中找到的jar包,maven搜索依赖的顺序却肯定是本地仓库->中央仓库->远程仓库。
7.以后可能遇到的问题
因为maven的约定大于配置,我们可能遇到写的.xml或者.properties文件无法导出的问题(举个栗子,maven规定了Java文件夹只能放Java源码,你因为项目需求在Java文件夹下加了.xml文件就会被过滤掉)。解决方法就是在build标签内配置<resources>
二、给一个项目配置配置Tomcat
PS: 如果以后使用springboot框架,就不需要再操心Tomcat的配置了。因为springboot框架默认集成了Tomcat这个服务器,而且会给你自动装配。
PS:Tomcat是给项目配,而不是整个IDEA配。下次换个项目还要重新配。
1.点击IDEA右上角的“add configuration”
发现有一个Error,前言中我们就提到过IDEA没有内置Tomcat,所以需要我们去指定本地下载的Tomcat的文件夹在哪,错误的原因就在于还未指定。
问题解决:点击上图中的configure,然后选中Tomcat的安装目录。
Server这个页面没有需要配置的东西了,那就详细说一下这个页面
警告:还没有指定一个artifacts。左上角猫头上的红色叉号也是因为这个warning的存在。
为什么会有这个错误:Tomcat访问一个页面的时候,需要指定一个文件夹。我们在介绍Tomcat目录结构的时候提到过。JavaWeb学习笔记(三)—— Tomcat的目录结构_玛丽莲茼蒿的博客-CSDN博客
之前没有借助IDEA开发的时候,在webapps这个文件夹下有很多项目,那么项目所在的文件夹名就可以用来在Tomcat服务中访问该项目。然而, 在IDEA开发的时候只有一个项目(webapp),所以我们需要手动去配置这个文件夹名称,这就是虚拟路径映射。
解决:进入Deployment页面
PS:
apply,然后OK,我们测试一下。
自动弹出来如下网页