Maven理解整理

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):
VScode Maven创建java项目

  • 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>,点击绿色小三角
V
然后可以看到
在这里插入图片描述
接下来打开浏览器,localhost:8080

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值