maven 安装配置与基础概念(超详细 手把手教你学会)
JAVA进阶 Tomcat入门教学
三大框架:控制层框架SpringMVC
框架提供了很多类给我们用,是对类的封装。
Mybatis框架是对jdbc,结果集转换等功能的封装。
学习三大框架 springmvc , spring , mybatis
大框架由模块(小框架)组成,每个模块作者使用了最好的小框架来实现
如 springmvc 中把对象转成 json ,最早使用 fastjson ,现在使用 jackson
如 mybatis 中连接池使用过 c3po,druid, HiKari
框架就像宝马一样,封装了最好的发动机,轮胎。使用了最好的配件。
长江后浪推前浪。
优点:少写代码,提供很多功能
缺点:框架制定了一些规则,必须遵守。适应这个框架
安装jdk1.8
百度云链接:https://pan.baidu.com/s/1ObkldlaWDh2tFj5YPjrPPw
提取码:ch97
复制这段内容后打开百度网盘手机App,操作更方便哦
最简单的修改方式是:Windows——>Preferences——>Java–>Editor–>Content Asist,在Auto activation triggers for Java后面的文本框里只有一个“.”。现在你将其改为“.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”即可
手动拷贝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都能大显身手。
www.maven.org是maven的中央仓库,搜索一个框架后,找到某个版本,可以下载jar。
Mysql驱动的版本要和数据库的版本一致。
mvnrepository.com
是国内的maven中央仓库,访问速度快。
官网地址:http://maven.apache.org/download.html
百度云链接:https://pan.baidu.com/s/1yQxgdN5y3fvSzQ5e126dvg
提取码:lzvc
提供的是最新版,已经配置好阿里云服务器,低版本的eclipse可能不兼容新版本的maven。
在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/ apache-maven-3.3.9.rar 已经配置好了本地仓库位置和阿里云服务器地址
打开 conf/settings.xml 修改 localRepository 的值为自己电脑上的文件夹
这里修改为自己电脑上的maven文件夹
把 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中其实内嵌了Java编译器,其编译器的作用等同于jdk中的javac,所以eclipse其实只需要jre就可以编译java文件(在eclipse中当你保存一个java类时,它就会自动编译这个java类,相当于在命令行中用了javac这个命令)。但如果你在eclipse中用了maven这样的工具,可能就无法编译了。因为maven默认使用javac来编译项目的,也就是需要jdk,而如果你的eclipse中某maven项目只指定了jre,就会出现无法编译的情况。
有极个别电脑要指向jre。
1.创建java程序 com.xxx.maven01 , com.xxx设置公司域名
2.软件有版本号,由三部分组成 主板号.次版本号.提交次数
version: chrome 7.2.89
89:修改了一个bug,加1
5:次版本
7:主版本
起始版本:0.0.1
打开pom.xml后,默认是overview,点pom.xml
Xml是一种类似html的标记语言,里面有很多标记。
查看本地仓库下多了以下文件
Jar的文件夹中包含groupid,artifactId,version
src存放代码
test存放测试代码
pom.xml放依赖信息
不能访问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的位置,包含包名,项目名,版本。
<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 fileswitch workspaceother更改工作区后需要重新设置设置jdk,maven,重新设置自动提示,设置字号。
1,Javainstall JRES设置jdk
2,mavenuser Settings
3,JavaEditorContent Asist,在Auto activation triggers for Java后面的文本框里只有一个“.”。
现在你将其改为“.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”即可
4,设置字号如下图。
服务器返回网页,只能显示在浏览器上
返回json,可以用不同的界面开发技术把json显示在不同设备上。
在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>
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
}
}
}
windows菜单,手机通讯录,微信通讯录都需要知道汉字的拼音。汉字转拼音的jar,maven中央仓库上已经没有了,需要手动拷贝到本地仓库中。
创建一个 maven-archetype-quickstart 类型项目maven02_pinyin
<dependency>
<groupId>net.sourceforge.pinyin4j</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
然后我们进入本地仓库 把下载失败的内容全部删除!没错全删除!
链接:https://pan.baidu.com/s/1oO63rzaC2db0FX8NX5QM7A
提取码:gr3b
下载后,复制粘贴进去
选中项目右键 maven → update project,勾上 force update。
会再次下载souces,生成.lastUpdated文件。
修改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);
}
}
后面会用到大量的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时,如果报内存溢出,如使用 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把多个项目合并在一起,发布给用户用。
版本冲突如何解决呢?
如果合并后使用了低版本,高版本中的新方法还能用吗?使用了高版本,低版本的旧方法还能用吗?
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.0</version>
</dependency>
package com.tedu.maven03item;
public class Item {
}
选中项目右键 run as →maven install
Jar 文件可以提供给别人使用。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.5</version>
</dependency>
Jar 文件可以提供给别人使用。
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>
如果合并后的项目,依赖了低版本,某个模块用了高版本,高版本中的新的方法就用不了,会出错。
如果依赖了高版本,高版本会删除低版本中的方法。
必须统一版本。升级版本时,公司统一都升级。
修改packaging的值为pom,表是这个项目是用来管理依赖。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.0</version>
</dependency>
将项目打包设置成pom会报错,必须选中项目右键 maven →update project
每个公司都会定义一个parent,在parent中定义所有的依赖,每个项目都会继承之parent,确保依赖的版本是一致的。