2022跟学尚硅谷Maven入门二 IDEA操作
- 第四章 使用Maven:IDEA环境
- 第一节 创建父工程
- 1.创建 Project
- 2.开启自动导入
- 第二节 配置 Maven 信息
- 第三节 创建 Java 模块工程
- 第四节 创建Web模块工程
- 1.创建模块
- 2.修改打包方式
- 3.Web 设定
- 4.借助IDEA生成web.xml
- 5.设置 Web 资源的根目录
- 6.配置Tomcat
- 第五节 其他操作
- 1.在IDEA中执行Maven命令
- (1)直接执行
- (2)手动输入
- (3)命令行输入
- 2.在IDEA中查看某个模块的依赖信息
- 3.工程导入
- (1)来自版本控制系统
- (2)来自版本控制系统
- (3)来自工程目录
- [1]工程压缩包
- [2]解压
- [3]打开
- [4]设置 Maven 核心程序位置
- 4.模块导入
- (1)情景重现
- (2)导入 Java 类型模块
- [1]找到老师发的工程目录
- [2]复制我们想要导入的模块目录
- [3]粘贴到我们自己工程目录下
- [4]在 IDEA 中执行导入
- [5]修改 pom.xml
- [6]最终效果
- (3)导入 Web 类型模块
- 第五章 其他核心概念
- 第一节 其他核心概念
- 1.生命周期
- (1)作用
- (2)三个生命周期
- (3)特点
- 2.插件和目标
- (1)插件
- (2)目标
- 3.仓库
第四章 使用Maven:IDEA环境
第一节 创建父工程
1.创建 Project
IDEA版本: 2021.3.1
配置项目名称
Name 项目名称 pro02-maven-idea-parent
GroupId 用来定位Maven com.atguigu.maven
ArtifactId 用来定位Maven 和项目名一致即可
2.开启自动导入
第二节 配置 Maven 信息
每次创建 Project 后都需要设置 Maven 家目录位置,否则 IDEA 将使用内置的 Maven 核心程序(不稳定)并使用默认的本地仓库位置。这样一来,我们在命令行操作过程中已下载好的 jar 包就白下载了,
默认的本地仓库通常在 C 盘,还影响系统运行。
配置之后,IDEA 会根据我们在这里指定的 Maven 家目录自动识别到我们在 settings.xml 配置文件中指定的本地仓库。
配置:
Maven下载解压包的解压路径
setting.xml文件位置
Maven仓库位置
第三节 创建 Java 模块工程
创建子工程(模块工程)
点击下一步
修改项目名
点击完成
子工程创建完毕后,父工程pom.xml会自动添加packaging
手写一个程序测试一下。
先配置父工程的pom.xml增加
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
配置Maven的JDK
创建JAVA类
输入类名创建
package com.atguigu.maven;
/**
* @ClassName: Hello
* @Description:
* @Author: wty
* @Date: 2022/12/31
*/
public class Hello {
public void showMessage(){
System.out.println("Hello maven, I am IDEA");
}
}
创建测试类
这里要注意,IDEA2021.3.1兼容Maven3.63之前的版本,之后Maven如果太高是不兼容的,所以一定要下载老一点的版本,稳定一些。
package com.atguigu.maven;
import org.junit.Test;
/**
* @ClassName: HelloTest
* @Description:
* @Author: wty
* @Date: 2022/12/31
*/
public class HelloTest {
@Test
public void testHello(){
Hello hello = new Hello();
hello.showMessage();
}
}
第四节 创建Web模块工程
1.创建模块
按照前面的同样操作创建模块,此时这个模块其实还是一个Java模块。
2.修改打包方式
Web 模块将来打包当然应该是 war 包。
<packaging>war</packaging>
3.Web 设定
首先打开项目结构菜单:
点击下一步
输入项目名称后点击完成
打开pom.xml,packaging设置为 war
<packaging>war</packaging>
4.借助IDEA生成web.xml
点击Facets
5.设置 Web 资源的根目录
配置如下
F:\javawebwork\pro02-maven-idea-parent\pro04-module-web\src\main\webapp\WEB-INF\web.xml
配置web.xml路径
核对目录
简单测试一下创建前台界面
取名index.jsp
新建Java类
编写代码
package com.atguigu.maven;
/**
* @ClassName: Message
* @Description:
* @Author: wty
* @Date: 2023/1/1
*/
public class Message {
public String getMessage(){
return "hello message";
}
}
编写index.jsp代码
<%@ page import="com.atguigu.maven.Message" %><%--
Created by IntelliJ IDEA.
User: wty
Date: 2023/1/1
Time: 14:38
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%=new Message().getMessage()%>
</body>
</html>
6.配置Tomcat
点击新建Tomcat
选择Edit Configurations……
配置Tomcat
配置Tomcat依赖
选择Artifact
配置Artifact
更改上下文参数
更改为/demo后点击右下角Apply
之后切换到Server继续配置
配置完毕,点击右上角的绿色三角启动Tomcat
第五节 其他操作
1.在IDEA中执行Maven命令
(1)直接执行
生命周期菜单
(2)手动输入
输入自定义指令
mvn clean install
跳过测试执行安装
# -D 表示后面要附加命令的参数,字母 D 和后面的参数是紧挨着的,中间没有任何其它字符
mvn clean install -Dmaven.test.skip=true
(3)命令行输入
要先把Terminal更改为cmd
命令行中可以执行相同命令
2.在IDEA中查看某个模块的依赖信息
3.工程导入
Maven工程除了自己创建的,还有很多情况是别人创建的。而为了参与开发或者是参考学习,我们都需
要导入到 IDEA 中。下面我们分几种不同情况来说明:
(1)来自版本控制系统
目前我们通常使用的都是 Git(本地库) + 码云(远程库)的版本控制系统,结合 IDEA 的相关操作方式
请点这里 (opens new window)查看克隆远程库部分。
(2)来自版本控制系统
目前我们通常使用的都是 Git(本地库) + 码云(远程库)的版本控制系统,结合 IDEA 的相关操作方式
请点这里 (opens new window)查看克隆远程库部分。
(3)来自工程目录
直接使用 IDEA 打开工程目录即可。下面咱们举个例子:
打开命令行
创建新项目
mvn archetype:generate
注意是在根目录下创建,打开IDEA最好使用管理员运行
新建的项目目录如下
[1]工程压缩包
假设别人发给我们一个 Maven 工程的 zip 压缩包:maven-rest-demo.zip。从码云或GitHub上也可以
以 ZIP 压缩格式对项目代码打包下载
[2]解压
如果你的所有 IDEA 工程有一个专门的目录来存放,而不是散落各处,那么首先我们就把 ZIP 包解压到
这个指定目录中。
[3]打开
只要我们确认在解压目录下可以直接看到 pom.xml,那就能证明这个解压目录就是我们的工程目录。那
么接下来让 IDEA 打开这个目录就可以了。
用IDEA打开目录
打开项目
打开后,选择新窗口打开
[4]设置 Maven 核心程序位置
打开一个新的 Maven 工程,和新创建一个 Maven 工程是一样的,此时 IDEA 的 settings 配置中关于
Maven 仍然是默认值:
所以我们还是需要像新建 Maven 工程那样,指定一下 Maven 核心程序位置:
导入的项目中Build中有报错
解决方案
4.模块导入
(1)情景重现
在实际开发中,通常会忽略模块(也就是module)所在的项目(也就是project)仅仅导入某一个模块
本身。这么做很可能是类似这样的情况:比如基于 Maven 学习 SSM 的时候,做练习需要导入老师发给
我们的代码参考。
新建一个项目:
配置项目信息
配置Maven信息
(2)导入 Java 类型模块
[1]找到老师发的工程目录
采用上面新建的项目即可
[2]复制我们想要导入的模块目录
ctrl+c直接复制Module即可
[3]粘贴到我们自己工程目录下
这个工程(project)是我们事先在 IDEA 中创建好的
ctrl+v粘贴
[4]在 IDEA 中执行导入
粘贴完后,可以在项目中看到2个Module
选择import Module
紧接着选择1个Module(这里IDEA不支持多选)
选择导入Module
同样操作重复做一下,导入web项目,之后查看项目变化
之后配置Tomcat和前面步骤一样,再运行Tomcat发现项目成功启动即可
[5]修改 pom.xml
刚刚导入的 module 的父工程坐标还是以前的,需要改成我们自己的 project。
给父工程添加语句
<packaging>pom</packaging>
添加依赖后,刷新Maven
[6]最终效果
不报错
(3)导入 Web 类型模块
其它操作和上面演示的都一样,只是多一步:删除多余的、不正确的 web.xml 设置。
第五章 其他核心概念
第一节 其他核心概念
1.生命周期
(1)作用
为了让构建过程自动化完成,Maven 设定了三个生命周期,生命周期中的每一个环节对应构建过程中的一个操作。
(2)三个生命周期
生命周期名称 | 作用 | 各个环节 |
---|---|---|
Clean | 清理操作相关 | pre-clean clean post-clean |
Site | 生成站点相关 | pre-site site post-site deploy-site |
Default | 主要构建过程 | validate generate-sources process-sources generate-resources process resources 复制并处理资源文件,至目标目录,准备打包。 compile 编译项目main 目录下的源代码。 process-classes generate-test-sources process-test-sources generate-test-resources process-test-resources 复制并处理资源文件,至目标测试目录。 test-compile 编译测试源代码。 process-test-classes test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。 prepare-package package 接受编译好的代码,打包成可发布的格式,如JAR。 pre-integration-test integration-test post-integration-test verify install将包安装至本地仓库,以让其它项目依赖。 deploy将最终的包复制到远程的仓库,以让其它开发人员共享;或者部署到服务器上运行(需借助插件,例如:cargo)。 |
(3)特点
前面三个生命周期彼此是独立的。
在任何一个生命周期内部,执行任何一个具体环节的操作,都是从本周期最初的位置开始执行,直到指定的地方。(本节记住这句话就行了,其他的都不需要记)
Maven 之所以这么设计其实就是为了提高构建过程的自动化程度:让使用者只关心最终要干的即可,过程中的各个环节是自动执行的。
比如执行的是install但是会把install之前的生命周期跑一遍
2.插件和目标
(1)插件
Maven 的核心程序仅仅负责宏观调度,不做具体工作。具体工作都是由 Maven 插件完成的。例如:编
译就是由 maven-compiler-plugin-3.1.jar 插件来执行的。
(2)目标
一个插件可以对应多个目标,而每一个目标都和生命周期中的某一个环节对应。
Default 生命周期中有 compile 和 test-compile 两个和编译相关的环节,这两个环节对应 compile 和
test-compile 两个目标,而这两个目标都是由 maven-compiler-plugin-3.1.jar 插件来执行的。
3.仓库
(1).本地仓库:在当前电脑上,为电脑上所有 Maven 工程服务
(2).远程仓库:需要联网
局域网:我们自己搭建的 Maven 私服,例如使用 Nexus 技术。
Internet
中央仓库
镜像仓库:内容和中央仓库保持一致,但是能够分担中央仓库的负载,同时让用户能够
就近访问提高下载速度,例如:Nexus aliyun
建议:不要中央仓库和阿里云镜像混用,否则 jar 包来源不纯,彼此冲突。
专门搜索 Maven 依赖信息的网站:https://mvnrepository.com/