maven 安装配置与基础概念(超详细 手把手教你学会)

maven

springboot整合框架

上期内容

maven 安装配置与基础概念(超详细 手把手教你学会)
JAVA进阶 Tomcat入门教学

下期内容

三大框架:控制层框架SpringMVC

概述:

框架提供了很多类给我们用,是对类的封装。
在这里插入图片描述
Mybatis框架是对jdbc,结果集转换等功能的封装。
学习三大框架 springmvc , spring , mybatis

框架是什么?

大框架由模块(小框架)组成,每个模块作者使用了最好的小框架来实现
如 springmvc 中把对象转成 json ,最早使用 fastjson ,现在使用 jackson
如 mybatis 中连接池使用过 c3po,druid, HiKari
框架就像宝马一样,封装了最好的发动机,轮胎。使用了最好的配件。
长江后浪推前浪。

优点:少写代码,提供很多功能
缺点:框架制定了一些规则,必须遵守。适应这个框架
在这里插入图片描述

开发环境

登录电脑的用户名不能是中文
Java

安装jdk1.8

安装editplus

百度云链接:https://pan.baidu.com/s/1ObkldlaWDh2tFj5YPjrPPw
提取码:ch97
复制这段内容后打开百度网盘手机App,操作更方便哦

安装最新版eclipse

在这里插入图片描述
在这里插入图片描述


eclipse自动补全设置

最简单的修改方式是:Windows——>Preferences——>Java–>Editor–>Content Asist,在Auto activation triggers for Java后面的文本框里只有一个“.”。现在你将其改为“.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”即可

在这里插入图片描述



项目管理:Maven+SpringBoot

Maven基础概念介绍

手动拷贝jar存在的安全,维护等问题。

jar包就是别人已经写好的一些类,然后将这些类进行打包,你可以将这些jar包引入你的项目中,然后就可以直接使用这些jar包中的类和属性以及方法。
JAR(Java ARchive)是将一系列文件合并到单个压缩文件里,就象Zip那样。然而,同Java中其他任何东西一样,JAR文件是跨平台的,所以不必关心涉及具体平台的问题。

mysql.jar 项目中会使用大量的jar
maven有个

如果mysql驱动被别人修改。数据库中的所有数据会被别人看到,案例csdn 600w
在这里插入图片描述
Baidu酒店 数据库泄露。
在这里插入图片描述

数据库服务器中了木马,也有可能导致数据库泄露!

背景

在这里插入图片描述
现在几乎Maven已经成为了所有Java开源项目的标配,springCloud,springboot,springmvc,spring,mybatis等知名的开源项目都使用Maven进行管理。国内也有越来越多的知名的软件公司开始使用Maven管理他们的项目,如阿里巴巴和淘宝。

Maven——已经成为Java社区事实标准的项目管理工具,能帮你从琐碎的手工劳动中解脱出来,帮你规范整个组织的构建系统。不仅如此,它还有依赖管理、自动生成项目站点等超酷的特性。每天都有数以万计的开发者在访问中央仓库以获取他们需要的依赖。
Maven是跨平台的项目管理工具。作为Apache组织中的一个颇为成功的开源项目,主要服务于基于java平台的项目构建、依赖管理和项目信息管理。无论是小型的开源类库项目,还是大型的企业级应用;无论是传统的瀑布式开发,还是流行的敏捷模式,Maven都能大显身手。

Maven

在这里插入图片描述


远程仓库介绍

www.maven.org介绍

www.maven.org是maven的中央仓库,搜索一个框架后,找到某个版本,可以下载jar。
在这里插入图片描述
Mysql驱动的版本要和数据库的版本一致。


maven.aliyun.com介绍

mvnrepository.com
是国内的maven中央仓库,访问速度快。

在这里插入图片描述
在这里插入图片描述
查看分类排名
在这里插入图片描述
JDBC Pools连接池:
在这里插入图片描述

Maven作用

在这里插入图片描述在这里插入图片描述

安装和配置

官网地址:http://maven.apache.org/download.html

百度云链接:https://pan.baidu.com/s/1yQxgdN5y3fvSzQ5e126dvg
提取码:lzvc
提供的是最新版,已经配置好阿里云服务器,低版本的eclipse可能不兼容新版本的maven。

检查JAVA_HOME设置

在dos下查看 java版本
在这里插入图片描述
如果不显示java版本信息,参考下面文章设置java环境变量
https://blog.csdn.net/Luojun13Class/article/details/82860733?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

打开解压后的maven,修改conf/setting.xml中的localRepository

在这里插入图片描述
提供的 maven/ apache-maven-3.3.9.rar 已经配置好了本地仓库位置和阿里云服务器地址
打开 conf/settings.xml 修改 localRepository 的值为自己电脑上的文件夹
在这里插入图片描述
这里修改为自己电脑上的maven文件夹
在这里插入图片描述

设置环境变量path

把 maven/bin 目录加入到系统环境变量path中,这样在任何地方就可以使用mvn命令
在 dos 下使用 echo %path% 查看 path 以前的设置
在 path 中追加 maven 信息,操作如下:
Win10: 资源管理器中依次点击“此电脑”右键—“属性”—“高级系统设置”—“高级”—“环境变量”在系统变量下(不是用户变量)找到path,双击path,弹出编辑环境变量对话框,单击“新建”按钮,再通过“浏览”按钮选中 maven 的 bin 目录,依次单击“确定”即可完成环境变量设置
在这里插入图片描述
Win7:找到path后,在输入框中添加;D:\first\apache-maven-3.6.3-bin\bin
使用echo查看path设置
在这里插入图片描述

检查安装是否正确

重启 dos,path 配置才生效。
mvn -version
在这里插入图片描述



思考题

如果国外的maven服务器不能访问了,国内程序员到那下jar包?

Eclipse中设置jdk1.8,maven

Eclipse中其实内嵌了Java编译器,其编译器的作用等同于jdk中的javac,所以eclipse其实只需要jre就可以编译java文件(在eclipse中当你保存一个java类时,它就会自动编译这个java类,相当于在命令行中用了javac这个命令)。但如果你在eclipse中用了maven这样的工具,可能就无法编译了。因为maven默认使用javac来编译项目的,也就是需要jdk,而如果你的eclipse中某maven项目只指定了jre,就会出现无法编译的情况。

设置 jdk如下图:
在这里插入图片描述在这里插入图片描述

有极个别电脑要指向jre。

设置maven如下图

在这里插入图片描述

创建Maven项目

1.创建java程序 com.xxx.maven01 , com.xxx设置公司域名
2.软件有版本号,由三部分组成 主板号.次版本号.提交次数
version: chrome 7.2.89

89:修改了一个bug,加1
5:次版本
7:主版本

起始版本:0.0.1

方式一:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

判断项目是否成功

出现pox.xml说明成功了
在这里插入图片描述

Pom.xml内容介绍

打开pom.xml后,默认是overview,点pom.xml
在这里插入图片描述
Xml是一种类似html的标记语言,里面有很多标记。
在这里插入图片描述
查看本地仓库下多了以下文件
在这里插入图片描述

查看junit.jar保存的路径

Jar的文件夹中包含groupid,artifactId,version

maven项目的目录结构

src存放代码
test存放测试代码
pom.xml放依赖信息

添加Mysql依赖

不能访问https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.22,就直接拷贝坐标。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.22</version>
   </dependency>

在https://mvnrepository.com/上查找mysql坐标信息
在这里插入图片描述
在这里插入图片描述
坐标是用来确定jar的位置,包含包名,项目名,版本。

添加到pom.xml的dependencies中
在这里插入图片描述

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.22</version>
   </dependency>

查看下载的jar的位置,位置中包括groupid,artifactid,version
在这里插入图片描述
使用maven是从官网下载jar,以前是从别人或网上拷贝的,jar有可能被修改。



小结

软件开发就是使用第三方的jar来组装一个软件。像盖房子。
发邮件从网上下载一个jar,发短信也需要一个jar
需要的jar文件是从maven服务器上下载的。

Eclipse中更改工作区,重新配置maven

Eclipse fileswitch workspaceother更改工作区后需要重新设置设置jdk,maven,重新设置自动提示,设置字号。
1,Javainstall JRES设置jdk
2,mavenuser Settings
3,JavaEditorContent Asist,在Auto activation triggers for Java后面的文本框里只有一个“.”。
现在你将其改为“.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”即可
4,设置字号如下图。
在这里插入图片描述

Maven项目中使用jackson

服务器返回json的优点

服务器返回网页,只能显示在浏览器上
返回json,可以用不同的界面开发技术把json显示在不同设备上。

添加jackson

mvnrepository.com的json libraries分类中找到jackson
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.12.1

在这里插入图片描述

进不去的同学,可以直接复制

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.1</version>
</dependency>

在这里插入图片描述


使用jackson

我们创建一个java类 Item
在这里插入图片描述

package com.tedu.maven01;
//商品
public class Item {
    
    
	int id;
	String name;
	//快捷键alt+shift+s
	//创建一个构造方法
	public Item(int id, String name) {
    
    
		super();
		this.id = id;
		this.name = name;
	}
	//添加get()、set(方法)
	public int getId() {
    
    
		return id;
	}
	public void setId(int id) {
    
    
		this.id = id;
	}
	public String getName() {
    
    
		return name;
	}
	public void setName(String name) {
    
    
		this.name = name;
	}
}

修改app.java类

package com.tedu.maven01;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class App 
{
    
    
    public static void main( String[] args ) throws Exception{
    
    
      try {
    
    
    	//1,创建商品分类对象
          Item item = new Item(1, "华为mate10");
          
        //2,创建把商品分类对象转成json的对象
          //JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
          //ObjectMapper 是jackson提供的一个类
          ObjectMapper objectMapper= new ObjectMapper();
          
        //3,把商品分类对象转成json
          String json=objectMapper.writeValueAsString(item);
          
        //4,打印出来
          System.out.println(json); // json字符串可以返回给vue用,vue用v-for显示在界面上
	} catch (Exception e) {
    
    
		//程序运行在服务器上,把异常信息打印在console
		e.printStackTrace();
		//以后工作中部署异常
		//程序部署异常在服务器上
		//发邮件,发短信
		//要学会经常使用try catch
 	}
  }
}

在这里插入图片描述



手动拷贝jar

需求

windows菜单,手机通讯录,微信通讯录都需要知道汉字的拼音。汉字转拼音的jar,maven中央仓库上已经没有了,需要手动拷贝到本地仓库中。

创建项目

创建一个 maven-archetype-quickstart 类型项目maven02_pinyin
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

添加依赖

<dependency>
			<groupId>net.sourceforge.pinyin4j</groupId>
			<artifactId>pinyin4j</artifactId>
			<version>2.5.0</version>
</dependency>

查看错误信息

Pom.xml中的错误信息

在这里插入图片描述

本地仓库看不到jar

然后我们进入本地仓库 把下载失败的内容全部删除!没错全删除!
在这里插入图片描述

手动拷贝

链接:https://pan.baidu.com/s/1oO63rzaC2db0FX8NX5QM7A
提取码:gr3b
下载后,复制粘贴进去
在这里插入图片描述

Update (加载更新,如果出现误报错误,或者需要重新加载更新就使用这个)

选中项目右键 maven → update project,勾上 force update。
在这里插入图片描述
会再次下载souces,生成.lastUpdated文件。

可以发现没有报错了:
在这里插入图片描述

使用 jar

修改app.java中内容

package com.tedu.maven02_pinyin;

import net.sourceforge.pinyin4j.PinyinHelper;

public class App {
    
    
    public static void main( String[] args ){
    
    
        String[] pinyin=PinyinHelper
                //用断点查看变量的值
        		.toHanyuPinyinStringArray('清');
        System.out.println(pinyin);
    }
}

打上断点,Deug执行
在这里插入图片描述


下载百度云中的仓库

后面会用到大量的jar,如果从网上下载,下载很慢,所以我提供了一个仓库,大家下载使用:
链接:https://pan.baidu.com/s/13eeH_B31O6J28OEerMDzqg
提取码:9hsp

1,拷贝mavenRepositorySSM.rar到一个没有中文的文件夹中解压。
2,修改maven/conf/settings.xml中的仓库位置
3,重启eclipse
在这里插入图片描述

检查是否更改成功:
在这里插入图片描述

常见错误:创建项目时报错

方法1:
Maven是将骨架存放在下面目录中,如果骨架出错,就将本地仓库中的org目录清空,重新创建maven项目,Maven会重新下载。

RSA premaster secret error: SunTls12RsaPremasterSecret KeyGenerator not available -> [Help 1] [ERROR]

解决方法:
https://blog.csdn.net/daydayuptiantian/article/details/78763035

导入项目后乱码

修改项目字符集会导致乱码如下图:
在这里插入图片描述

执行maven命令时内存溢出

在使用maven时,如果报内存溢出,如使用 mvn package会耗费大量内存,则修改默认配置。
D:\javaenv\apache-maven-3.0.5\bin\mvn.bat
@REM set MAVEN_OPTS=……后加入
set MAVEN_OPTS= -Xms128m -Xmx512m

下载中断

远程仓库为国外网站,全球都到哪里下载。常会因为网络故障导致jar下载失败。
本地仓库中只有.lastUpdated文件,没有jar文件。
遇到这样的情况:
可以拷贝别人的仓库
可以等待网络比较好的时候再下载
最恶劣的一种情况,下载出异常,也就是pom.xml会提示jar包有问题,可到maven本地仓库,jar也存在。这时可以打开jar包,看是否能打开。如果打不开,则删除,触发maven重新下载。



多模块项目

分析

在这里插入图片描述

多项目开发有助于团队合作,独立开发,多个人同时开发。
企业中一个软件分多个项目,多个同时开发,用maven把多个项目合并在一起,发布给用户用。
版本冲突如何解决呢?
如果合并后使用了低版本,高版本中的新方法还能用吗?使用了高版本,低版本的旧方法还能用吗?

用户模块

接下来,我们创建3个项目maven03item 、maven03User、maven03WWW

创建新的项目maven03item , 快捷键ctrl+N弹出创建窗口

在这里插入图片描述在这里插入图片描述

添加依赖

<dependency>	
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.11.0</version>
</dependency>

在这里插入图片描述

创建Item.java类

package com.tedu.maven03item;
public class Item {
    
    

}

生成jar

选中项目右键 run as →maven install
Jar 文件可以提供给别人使用。
在这里插入图片描述

控制窗口中显示以下内容就证明下载完成,如果下载失败,请重新重复此步骤。

在这里插入图片描述


继续创建新的项目maven03User 快捷键ctrl+N

在这里插入图片描述

添加依赖

<dependency>	
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.10.5</version>
</dependency>

生成jar

选中项目右键 run as →maven install

Jar 文件可以提供给别人使用。


继续创建新的项目maven03WWW

在这里插入图片描述

重点来了:打开pom.xml→DependenciesAdd 在enter groupid下面的输入框中输入关键字。

在这里插入图片描述

测试依赖是否成功

package com.tedu.maven03WWW;

import com.tedu.maven03User.User;
import com.tedu.maven03item.Item;

public class App {
    
    
    public static void main( String[] args ){
    
    
    	User user = new User();
    	
    	Item item = new Item();
    }
}


依赖冲突

查看依赖的包

  <dependency>
    	<groupId>com.tedu</groupId>
    	<artifactId>maven03item</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    </dependency>
    
    <dependency>
    	<groupId>com.tedu</groupId>
    	<artifactId>maven03User</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    </dependency>

在这里插入图片描述

调整依赖的顺序

<dependency>
    	<groupId>com.tedu</groupId>
    	<artifactId>maven03user</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
 </dependency>

 <dependency>
    	<groupId>com.tedu</groupId>
    	<artifactId>maven03item</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
  </dependency>

在这里插入图片描述

结论:最先优先

如果合并后的项目,依赖了低版本,某个模块用了高版本,高版本中的新的方法就用不了,会出错。
如果依赖了高版本,高版本会删除低版本中的方法。
必须统一版本。升级版本时,公司统一都升级。



Parent统一版本

创建项目maven03parent

在这里插入图片描述

修改pom.xml,设置打包为pom

修改packaging的值为pom,表是这个项目是用来管理依赖。
在这里插入图片描述

在pom.xml中添加jackson依赖。
把maven03item中的jackson ,剪切到maven03parent中 或者复制到maven03parent,但是maven03item中的jackson 需要删除或注释。
  <dependency>	
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.11.0</version>
   </dependency>

将项目打包设置成pom会报错,必须选中项目右键 maven →update project
在这里插入图片描述

5.13.3修改 maven03user 和 maven03item 继承之maven03parent

在这里插入图片描述

Pom.xml中生成parent标签,删除或注释 原先的jackson的依赖

在这里插入图片描述

maven03item以上同理删除依赖继承之maven03parent

在这里插入图片描述

最后查看maven03www依赖

在这里插入图片描述

Maven经验

在这里插入图片描述

每个公司都会定义一个parent,在parent中定义所有的依赖,每个项目都会继承之parent,确保依赖的版本是一致的。

猜你喜欢

转载自blog.csdn.net/QQ1043051018/article/details/112553394