Maven详细讲解(保姆级教程)-【JAVA环境】

更多的程序员文章收录在

【JAVA方向学习文章视频汇总】


SpringBoot技术很多很多

本文专门讨论 SpringBoot相关技术的使用,必须要依赖于org.springframework.boot,所以项目必须要是springBoot 的项目

韩顺平说:学习JAVA的人有两大难
第一困惑,JAVA能百度到的知识太多太多,完全不知道学啥
第二困惑,就是不知道以什么样的顺序去学,有的时候乱看一堆视频有遗漏,有的时候,两边的视频还有重复。
建议,学习完右侧的技术之后,就应该投入到项目的学习当中,在项目里去学习左侧的技术会好很多。
Spring的外围技术就更多了。本例也是springBoot的外围技术,不过并不在下面的图表之中。
在这里插入图片描述
所以,学习东西要系统一些,如果基本功不够,那后面的技术就会学的很浮。

可以略过或浅尝辄止的技术

这个图中:看上去是过渡技术但是事实上在工作中用不到的:
springBoot里的技术本来就很多了,如果一股脑的扎进来,那有可能是撞的一头的包。

  • 无页面的 SpringBoot 的类的注入,配置等技术。(简单地过一遍就好)
  • JPA 技术 看上去应用面更多,但是问题是当大厂小厂都要求Mybatis 之后,其实JPA没有意义,小厂会使用Mybatis Plus 要注意的是这个并不是Mybatis 的升级,这只是Mybatis 的国内的再一次封装。
  • jdbc Template 这个是为了适应更多的数据库,如果项目中使用了国内的数据库,那么很有可能会用到这个技术,其它的项目,0.1%的可能用得到。
  • Thymeleaf 技术。非前后端分离,而且还是在国产的前后端分离完全流行之后,spring团队推出来的技术。在国内一点市场没有,在国外,可能市场不少。

最最典型的就是使用layui 也是前后端分离,非VUE。
基于Spring Boot的大学宿舍管理系统【大作业及毕设项目】

还有就是使用VUE做前端的,
那项目就多了,可以说是遍地都是。项目的总目录文章如下:
JAVA项目环境必知必会–【大作业及毕设项目】

环境及工具:

JAVA环境及工具:

本系列环境

环境win11安装博文B站视频地址
工具idea 2020Idea2020安装详解以及JAVA项目技术讨论-【JAVA环境】【JAVA环境】介绍IDEA 2020的下载以及安装
jdkJDK1.8JDK安装详解以及JAVA项目技术讨论-【JAVA环境】【JAVA环境】jdk安装及配置
数据库mysql5.5mysql安装超详细步骤(保姆级教程)以及JAVA项目技术讨论-【mysql数据库】
maven3.6.0Maven安装超详细步骤(保姆级教程)以及ANT讲解【JAVA环境】tomcat,Maven安装与配置
WEB服务器tomcattomcat安装超详细步骤(保姆级教程)【JAVA环境】tomcat,Maven安装与配置
数据库前端工具mysql-front
数据库前端工具navicat
其它lombok(低版本的idea上需要)【JAVA环境】在idea里碰到get/set编译的错误(lombok安装)

数据库前端工具:mysql-front (navicat 也可以)
主要是这些跟PHPStudy 2018 整合了,所以有的时候懒的打开navicat
关于环境的重要性,直接看上面的《SpringBoot 的项目编译即报错处理–JSB系列之001

数据库前端工具:mysql-front (navicat 也可以)
主要是这些跟PHPStudy 2018 整合了,所以有的时候懒的打开navicat
关于环境的重要性,直接看上面的《SpringBoot 的项目编译即报错处理–JSB系列之001

如果基础不牢,要回避的知识

假定,你在学校做过了JAVA的小项目了。(我指的是swing,servlet 之类) 可能会点SSM,也可能不会,那我马上就要毕业了,我得搞项目,搞毕设呀。啊!!!

  • 第一个要回避的就是JWT。
  • 上面的不使用了,shiro 也就不需要了
  • 然后是redis
    说一下理由。第一,你一个人使用的系统,你用啥JWT?Session. cookie , JWT 都是你一个人在用。完全不存在用户信息泄漏。
    单点登录就更用不上了。一共就一个系统。
    redis 也不需要,别说你一个人在使用,就是全班的人都在使用50人在线,redis 的优势也自不出来。mysql 数据库连这一点点的数据都不能快速响应,那PHP的平台的不是要直接宕机?而且mybatis 本身还有缓存。
    当然了,这是指你自己要把代码弄懂的这个前提下说的。
    但是问题是开源项目是别人的运行好的。那用啥环境也不是你能决定了,是吧?
    我说的是如果:
    你能选择的话,那你的JAVA毕设用JAVASpringBoot+layui + 微信小程序
    这样跑的又轻松,又紧跟时代潮流,学起来也快。

Maven版本

总之一句话,maven 3.6 版本,足够你整个大学生活。

maven

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven的主要目标是允许开发人员理解完整的 在最短的时间内完成开发工作。简化构建过程,提供统一的构建系统,提供高质量的项目信息,鼓励更好的发展做法。 [4]
Maven 和 Ant 针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务。Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。因此,由于 Maven 和 Ant代表两个差异很大的工具,所以接下来只说明这两个工具的等同组件之间的区别,如表 1 所示。 [1]

说明MavenAnt
标准构建文件project.xml 和 maven.xmlbuild.xml
特性处理顺序${maven.home}/bin/driver.properties ${project.home}/project.properties ${project.home}/build.properties ${user.home}/build.properties 通过 -D 命令行选项定义的系统特性 最后一个定义起决定作用。通过 -D 命令行选项定义的系统特性 由 任务装入的特性 第一个定义最先被处理。
构建规则构建规则更为动态(类似于编程语言);它们是基于 Jelly 的可执行 XML。构建规则或多或少是静态的,除非使用

Apache Maven是一个(特别是Java编程)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当使用Maven的时候,用一个明确定义的项目对象模型来描述项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven 有一个生命周期,当运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
此外,Maven能够很方便的管理项目报告,生成站点,管理JAR文件,等等。

常用命令

mvn archetype:generate 创建Maven项目
mvn compile 编译源代码
mvn deploy 发布项目
mvn test-compile 编译测试源代码
mvn test 运行应用程序中的单元测试
mvn site 生成项目相关信息的网站
mvn clean 清除项目目录中的生成结果
mvn package 根据项目生成的jar
mvn install 在本地Repository中安装jar
mvn eclipse:eclipse 生成eclipse项目文件
mvnjetty:run 启动jetty服务
mvntomcat:run 启动tomcat服务
mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,跳过测试类

Maven安装详解

其实,下载了之后,直接放在目录就可以了。
我一般在放在D:\java 的这个目录下面。

1.下载安装程序

其中tomca Maven 也可以用预置目录的自解压文件
https://download.csdn.net/download/dearmite/90689660

B站上面也有视频教你一步步的安装。
【JAVA环境】tomcat,Maven安装与配置

也可以自行去官网:
从 Apache Maven 官网或者阿里云镜像站下载 Maven 的二进制包。这里建议使用阿里云镜像站(https://mirrors.aliyun.com/apache/maven/maven-3/3.9.5/binaries/?spm=a2c6h.25603864.0.0.3194121eu7SXqa)。
当然,镜像就有失效的可能。

在这里插入图片描述
2.压缩包下载成功后解压到指定目录,这里以3.9.5版本为例
在这里插入图片描述

3.新建maven仓库
(就是找一个D盘的空目录用来放maven 下载的JAR包)
随着项目的增多,这个目录可能会增长到10G以上。
在这里插入图片描述
配置环境变量
注意:(由于 Maven 是用 Java 编写的,因此需要先安装 JDK)
1.找到settings.xml文件,使用记事本或VSCode打开
在这里插入图片描述
2.找到localRepository,添加maven仓库路径,并复制到注释外使其生效

在这里插入图片描述
3.阿里云镜像站链接

在这里插入图片描述

找到mirrors,添加阿里云镜像

在这里插入图片描述
看上去是不是很复杂?
对于初学者是不是不友好?

这就是我为什么让你下载我上传到CSDN里面的文件的原因了。
因为我把settings.xml 修改好了。

2.配置环境变量

右击此电脑–>属性–>高级系统设置–>环境变量(不熟悉的参照一下)
因为安到maven 的同学,肯定都是安过JDK 的
mysql安装超详细步骤(保姆级教程)以及JAVA项目技术讨论-【mysql数据库】

或者:
JDK安装详解以及JAVA项目技术讨论-【JAVA环境】

(1)新建系统变量,变量值是自己安装maven的根目录
在这里插入图片描述
在这里插入图片描述
(2)找到path编辑添加如下内容
在这里插入图片描述

3.验证是否成功(关键步骤!)

打开新的命令行窗口(一定要新开!),输入:

mvn -v

出现类似以下信息说明成功:

在这里插入图片描述

MAVAN 项目目录结构:

目录结构
src/main/java:存放主程序代码。
src/main/resources:存放配置文件。
src/test/java:存放测试代码。
src/test/resources:存放测试配置文件。
target:构建过程中生成的文件(需要运行代码,产生编译文件,后才会出现)。
在这里插入图片描述
生命周期
Maven 的生命周期包括 Clean、Default 和 Site 三个部分,涵盖了从清理到构建、测试、打包、安装和部署的全过程。
在这里插入图片描述

MAVEN 本地库

maven如何查询本地库 查看maven仓库路径

settings.xml有什么用
从settings.xml的文件名就可以看出,它是用来设置maven参数的配置文件。并且,settings.xml是maven的全局配置文件。而pom.xml文件是所在项目的局部配置。

Settings.xml中包含类似本地仓储位置、修改远程仓储服务器、认证信息等配置。

settings.xml文件位置
全局配置: ${M2_HOME}/conf/settings.xml

用户配置: user.home/.m2/settings.xmlnote:用户配置优先于全局配置。user.home/.m2/settings.xmlnote:用户配置优先于全局配置。{user.home} 和和所有其他系统属性只能在3.0+版本上使用。请注意windows和Linux使用变量的区别。

配置优先级
需要注意的是:局部配置优先于全局配置。

配置优先级从高到低:pom.xml> user settings > global settings

如果这些文件同时存在,在应用配置时,会合并它们的内容,如果有重复的配置,优先级高的配置会覆盖优先级低的。

ps.修改了配置文件最好吧cmd和eclipse重开一下

settings.xml元素详解

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0                          https://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository/>
  <interactiveMode/>
  <usePluginRegistry/>
  <offline/>
  <pluginGroups/>
  <servers/>
  <mirrors/>
  <proxies/>
  <profiles/>
  <activeProfiles/>
</settings>

LocalRepository
作用:该值表示构建系统本地仓库的路径。

其默认值:~/.m2/repository。${user.home}/.m2/repository

InteractiveMode
作用:表示maven是否需要和用户交互以获得输入。

如果maven需要和用户交互以获得输入,则设置成true,反之则应为false。默认为true。true

UsePluginRegistry
作用:maven是否需要使用plugin-registry.xml文件来管理插件版本。

如果需要让maven使用文件~/.m2/plugin-registry.xml来管理插件版本,则设为true。默认为false。false

Offline
作用:表示maven是否需要在离线模式下运行。

如果构建系统需要在离线模式下运行,则为true,默认为false。

当由于网络设置原因或者安全因素,构建服务器不能连接远程仓库的时候,该配置就十分有用。false

PluginGroups
作用:当插件的组织id(groupId)没有显式提供时,供搜寻插件组织Id(groupId)的列表。

该元素包含一个pluginGroup元素列表,每个子元素包含了一个组织Id(groupId)。

当我们使用某个插件,并且没有在命令行为其提供组织Id(groupId)的时候,Maven就会使用该列表。默认情况下该列表包含了org.apache.maven.plugins和org.codehaus.mojo。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <pluginGroups>
    <!--plugin的组织Id(groupId) -->
    <pluginGroup>org.codehaus.mojo</pluginGroup>
  </pluginGroups>
  ...
</settings>

Servers
作用:一般,仓库的下载和部署是在pom.xml文件中的repositories和distributionManagement元素中定义的。然而,一般类似用户名、密码(有些仓库访问是需要安全认证的)等信息不应该在pom.xml文件中配置,这些信息可以配置在settings.xml中。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <!--配置服务端的一些设置。一些设置如安全证书不应该和pom.xml一起分发。这种类型的信息应该存在于构建服务器上的settings.xml文件中。-->
  <servers>
    <!--服务器元素包含配置服务器时需要的信息 -->
    <server>
      <!--这是server的id(注意不是用户登陆的id),该id与distributionManagement中repository元素的id相匹配。-->
      <id>server001</id>
      <!--鉴权用户名。鉴权用户名和鉴权密码表示服务器认证所需要的登录名和密码。-->
      <username>my_login</username>
      <!--鉴权密码 。鉴权用户名和鉴权密码表示服务器认证所需要的登录名和密码。密码加密功能已被添加到2.1.0 +。详情请访问密码加密页面 -->
      <password>my_password</password>
      <!--鉴权时使用的私钥位置。和前两个元素类似,私钥位置和私钥密码指定了一个私钥的路径(默认是${user.home}/.ssh/id_dsa)以及如果需要的话,一个密语。将来passphrase和password元素可能会被提取到外部,但目前它们必须在settings.xml文件以纯文本的形式声明。-->
      <privateKey>${usr.home}/.ssh/id_dsa</privateKey>
      <!--鉴权时使用的私钥密码。-->
      <passphrase>some_passphrase</passphrase>
      <!--文件被创建时的权限。如果在部署的时候会创建一个仓库文件或者目录,这时候就可以使用权限(permission)。这两个元素合法的值是一个三位数字,其对应了unix文件系统的权限,如664,或者775-->
      <filePermissions>664</filePermissions>
      <!--目录被创建时的权限。-->
      <directoryPermissions>775</directoryPermissions>
    </server>
  </servers>
  ...
</settings>

Mirrors

作用:为仓库列表配置的下载镜像列表。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <mirrors>
    <!-- 给定仓库的下载镜像。-->
    <mirror>
      <!-- 该镜像的唯一标识符。id用来区分不同的mirror元素。-->
      <id>planetmirror.com</id>
      <!-- 镜像名称 -->
      <name>PlanetMirror Australia</name>
      <!-- 该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL。-->
      <url>http://downloads.planetmirror.com/pub/maven2</url>
      <!-- 被镜像的服务器的id。例如,如果我们要设置了一个Maven中央仓库(http://repo.maven.apache.org/maven2/)的镜像,就需要将该元素设置成central。这必须和中央仓库的id central完全一致。-->
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
  ...
</settings>

Proxies
作用:用来配置不同的代理。

Profiles
作用:根据环境参数来调整构建配置的列表。

settings.xml中的profile元素是pom.xml中profile元素的裁剪版本。

它包含了id、activation、repositories、pluginRepositories和 properties元素。这里的profile元素只包含这五个子元素是因为这里只关心构建系统这个整体(这正是settings.xml文件的角色定位),而非单独的项目对象模型设置。如果一个settings.xml中的profile被激活,它的值会覆盖任何其它定义在pom.xml中带有相同id的profile。

Activation
作用:自动触发profile的条件逻辑。

如pom.xml中的profile一样,profile的作用在于它能够在某些特定的环境中自动使用某些特定的值;这些环境通过activation元素指定。

activation元素并不是激活profile的唯一方式。settings.xml文件中的activeProfile元素可以包含profile的id。profile也可以通过在命令行,使用-P标记和逗号分隔的列表来显式的激活(如,-P test)。
注:在maven工程的pom.xml所在目录下执行mvn help:active-profiles命令可以查看中央仓储的profile是否在工程中生效。

properties
作用:对应profile的扩展属性列表。

maven属性和ant中的属性一样,可以用来存放一些值。这些值可以在pom.xml中的任何地方使用标记${X}来使用,这里X是指属性的名称。属性有五种不同的形式,并且都能在settings.xml文件中访问。

Repositories
作用:远程仓库列表,它是maven用来填充构建系统本地仓库所使用的一组远程仓库。
pluginRepositories
作用:发现插件的远程仓库列表。

和repository类似,只是repository是管理jar包依赖的仓库,pluginRepositories则是管理插件的仓库。

maven插件是一种特殊类型的构件。由于这个原因,插件仓库独立于其它仓库。pluginRepositories元素的结构和repositories元素的结构类似。每个pluginRepository元素指定一个Maven可以用来寻找新插件的远程地址。

ActiveProfiles
作用:手动激活profiles的列表,按照profile被应用的顺序定义activeProfile。

该元素包含了一组activeProfile元素,每个activeProfile都含有一个profile id。任何在activeProfile中定义的profile id,不论环境设置如何,其对应的 profile都会被激活。如果没有匹配的profile,则什么都不会发生。

例如,env-test是一个activeProfile,则在pom.xml(或者profile.xml)中对应id的profile会被激活。如果运行过程中找不到这样一个profile,Maven则会像往常一样运行。

总结

提示:IT是一个要多动手的职业,一定要多练不要贪快:
JAVA的学习是一门多练习技能
高效学习Java需要科学规划路径、强化实践并善用资源,以下结合主流学习方法和实战经验,整理出分阶段执行策略:
也要多看我的博客哟。

参考资源

【JAVA方向学习文章视频汇总】

【JAVA方向学习文章视频汇总】

JAVA项目环境必知必会–【大作业及毕设项目】

下载安装程序

其中tomca Maven 也可以用预置目录的自解压文件
https://download.csdn.net/download/dearmite/90689660

初学者不会设置的直接下载这个文件好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

项目张雪峰之巅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值