Maven
Maven的官方定义
maven是一个项目管理工具,包含了一个项目对象模型(POM Project Object Model),一组标准集合,一个项目生命周期(Project LiftCycle),一个依赖管理系统(Dependency Mainagement System),和用来运行定义在声明周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
主要功能:1.统一开发规范 2.统一管理jar包(依赖)
Maven的仓库分类及其关系
maven的最强大的一点莫过于根据jar包坐标找jar包,我们只需要在工程中引入相关jar包坐标,Maven就可以帮我们找到所需的jar包下载到工程
jar包坐标:
maven仓库
- 本地仓库:存储从远程仓库或者中央仓库下载的插件和jar包,项目中需要使用的jar优先从本地仓库中拿。
- 远程仓库:若本地仓库没有项目中要用的jar包,则从远程仓库取
- 中央仓库:maven中内置了一个远程仓库,这个网址就是中央仓库,服务于整个互联网,里面保存了几乎所有的jar包(为了加快下载的速度,一般会修改maven的settings.xml来使用阿里的镜像)
Note:maven项目所需要的jar包会优先从本地仓库中取,若在本地仓库(本地仓库需要自己在配置文件中指定,后面的内容会讲到如何配置)中没有找到,①若是个人项目,并且电脑联网,则会从中央仓库中下载所需的jar包放入到本地仓库中。②若是公司项目,公司可能会有自己的仓库(私服),当在本地方库找不到,会转向远程仓库,若远程仓库也找不到,则会转向中央仓库
Maven的工程
使用Maven创建的普通java工程,目录结构如下(VScode):
- src/main/java :放置编写的.java文件
- src/main/resources : 放置项目资源文件
- src/test : 放置所有单元测试.java文件
- target : 项目输出的位置,编译后的class文件会输出到此目录
- pom.xml : maven项目核心配置文件
使用maven创建Web工程,会在原有的目录结构中多出webapp目录
maven常用指令及绑定
compile: maven的工程编译指令,其作用是将src/main/java下的文件编译为class文件输出到target目录下
test: maven工程测试命令,执行src/test/java下的单元测试类
clean: maven工程的清理命令,执行clean会删除target目录及内容
package: maven工程的打包命令,将java工程打成jar包,将web工程打成war包
install: maven工程的安装命令,其作用是将jar包或war包发布到本地仓库
当执行任何一个指令时,maven都会将其之前指令都会执行
每条指令都绑定了插件内的goal
maven的生命周期
- Clean LifeCycle : 项目构建前的清理工作
- Default LifeCycle : 项目构建的核心部分,如,编译、测试、打包、部署等
- Site LifeCycle : 项目报告的生成、站点的发布
项目对象模型POM
Project Object Model 对应工程中的pom.xml文件
我们可以通过pom.xml文件定义项目坐标,项目依赖,项目信息和插件等
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>springboot02_congif_02</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
依赖管理
使用maven可以对所依赖的jar包进行统一管理。如项目依赖servlet,就需要在pom.xml文件中引入相关的依赖,它就会找指定的仓库下载Jar包。
-
groupId:项目所在组,一般是组织或公司
-
artifactId:当前在组中的唯一Id
-
version:版本号
-
scope:表示依赖范围
Maven的安装与使用
win10 x64
安装
官网下载压缩包,解压到自己想解压的路径,我放在了D:\maven
配置环境变量
我的电脑-属性-高级系统设置-环境变量-Path添加D:\maven\apache-maven-3.6.3\bin
测试:cmd下输入 mvn -v 可以看到
修改maven本地仓库
在想建仓库的位置新建文件夹F:\maven\repo
将D:\maven\apache-maven-3.6.3\conf下的settings.xml复制到新建目录下
将新旧两个目录下的settings.xml中的localRepository都修改成新建的目录
接着修改一下镜像新旧(两个),这样的下载速度比较快,用阿里云的镜像
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
测试:cmd运行命令mvn help:system
会将很多.jar和.pom文件下载到本地仓库,成功之后repo下会有很多新的文件夹
VScode配置maven
然后再vscode的设置中搜索maven,点击打开settings.json编辑
把自己对应的路径修改好
{
"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"files.autoGuessEncoding": true,
"editor.suggestSelection": "first",
"vsintellicode.modify.editor.suggestSelection": "automaticallyOverrodeDefaultValue",
"files.exclude": {
"**/.classpath": true,
"**/.project": true,
"**/.settings": true,
"**/.factorypath": true
},
"workbench.iconTheme": "vscode-great-icons",
"workbench.startupEditor": "newUntitledFile",
"java.errors.incompleteClasspath.severity": "ignore",
"java.home":"C:\\Program Files\\Java\\jdk-12.0.1",
"java.configuration.maven.userSettings": "D:\\maven\\apache-maven-3.6.3\\conf\\settings.xml",
"maven.executable.path": "D:\\maven\\apache-maven-3.6.3\\bin\\mvn",
"maven.terminal.useJavaHome": true,
"maven.terminal.customEnv": [
{
"environmentVariable": "JAVA_HOME",
"value": "C:\\Program Files\\Java\\jdk-12.0.1"
}
],
"maven.excludedFolders": [
"**/.*",
"**/node_modules",
"**/target",
"**/bin"
],
}
VS code [springboot(maven)]首先安装如下两个扩展
下载安装好了之后重启
应该是有下图的两个出来了
应该是有下图的两个出来了
跑个demo–HelloWorld
1.准备
ctr+shift+p-------spring
- Spring Initializr:Generate a Maven Project
- Java
- com.example
- demo1
- 2.2.6(此处是选择Springboot版本)
- 选择四个包DevTools(代码修改热更新,无需重启)、Web(集成tomcat、SpringMVC)、Lombok(智能生成setter、getter、toString等接口,无需手动生成,代码更简介)、Thymeleaf (模板引擎),鼠标选择,enter确定
- 选择工作区(文件夹)
- open
打开长这样
在java\com\example\demo1下新建控制器HelloController.java
package com.example.demo1;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/")
String home() {
return "Hello World!";
}
}
修改pom.xml中的java版本,1.8---->12.0.1
2.运行
点击调试和运行,创建launch.json
然后,选择DemoApplication<demo1>,点击绿色小三角
然后可以看到
接下来打开浏览器,localhost:8080