本章导航
导语:
哈喽,今天闪电蜗牛小课堂不开课,老易仙也不去汤锅泡澡了,现在从游戏领域扩展向代码技术领域啦!作为一个正式学习编程不到半年的小萌新,最近也开始入门java项目开发相关的技术操作。
第一次在cdsn写文章,虽然以前也写过一些游戏攻略,但来写代码相关的博客,还是对我有一定挑战的。代码技术的学习并不与游戏数据那么直观,这玩意得反复试错,尤其是入门时的各种碰壁——发现错误,了解原因,明白做什么,为什么,怎么做。有时候忙了好几个小时,都可能还是原地打转,当然和我一样的小伙伴不要气馁,毕竟刚刚起步,遇到点困难很正常,我不算聪明,但是我敢于稳步向前,困难最终还是被克服了。
现在我来分享一下我们今天的话题——idea中maven的使用与(jdbc驱动)jar包的导入。
<前排提示:本博客是作者本人的经历分享,本人书写采用经历故事的写法,与一般技术干货分享不一样。由于作者还是萌新,可能会出现描述错误、操作繁琐、原理错误等等问题,同时作者也可能会提出一些现在还不理解问题,如果有大佬能在评论区指点一二,本人感激不尽!希望大家阅读愉快!>
前置知识:
计算机基础操作、java环境配置、java编译原理及基础语法、idea软件基础操作、mySQL基础知识以及jdbc相关知识(涉及案例为jdbc的驱动jar包导入)
正文:
作为新人,一开始对maven这个概念就很陌生。maven是什么?
在查阅很多资料,以及实践,我觉得maven是一个用于项目架构的工具,通过对maven的pom文件的修改,自动导入依赖的jar包到java项目中,若有手动导入多个依赖jar包,就十分繁琐,而maven就可以很好解决这个问题。
由于在idea中就已经安装了maven的插件,如图
这便很大的降低了maven入门的难度(java相关的环境配置真的多,刚在VS温室学完c的表示简直是天差地别)。当然,我们现在只是知道maven的存在,可到底咋用呢?
(从零基础起步的我对这个问题非常头疼,网上的教学繁多,教学针对的对象也不一样,很多知识我不是很了解,好在经历一番风雨后最终是小有成果了。)
首先我们需要建造一个maven构建的项目
这里一定要选择maven构建,如果选择的是默认的lntelliJ,就会构建出这样的界面
这显然没有我们希望要找的pom文件,我一开始就是在这里懵了(看着其他佬的教程,说要修改pom文件,却发现明明没有pom文件,咋修改,难道让我自己创建一个?)。
正确新建项目,界面应该是这样的:
idea会自动打开pom文件,此时我们就可以开始在pom文件里插入我们需要导入的jar包了。
我们需要在这个位置里插入jar包的坐标。
这个坐标是什么呢?我的认识是,maven从云端连接了一个jar包库,而每个jar包位于库中的不同位置,坐标就是jar包位于库中的定位。
比如说,我们今天想通过maven导入jdbc驱动的jar包,最终应该有:
一开始这里是没有jdbc驱动的jar包的,如图:
我们可以选择手动导入,但这不是我们今天要探讨的,这个比较简单,网上的教程很快就可以解决问题。
作者提问区(求路过的大佬评论区解答):
我在写到这里时遭遇了一个问题,不知道为什么我这个maven构建的依赖包里有这么多东西(pom文件里也有很多),如图:
之前测试时用的pom和依赖包里就没那么多奇奇怪怪的东西。
(ps:在弄明白maven的基础功能前,曾经跟着一些教程,随便修改过一些配置不知道是不是会影响)
这里我有几个疑惑:
1、maven构建的项目,pom文件初始会导入什么依赖内容坐标吗,这些内容有什么用?
2、是不是maven的pom文件,每次项目创建都需要手动添加需要依赖的jar包坐标?
3、如果2的回答是否(不是每次都要手动修改pom文件),有没有什么设置,可以帮助我们创建新maven的项目后,pom的初始导入就包含一个我们需要依赖的jar包坐标?
分享继续~
我们首先要找到我们需要的jdbc驱动jar包的坐标,这里我给出获取坐标的官网:Maven Central
搜索jdbc驱动jar包名:mysql-connector-java
点进去
这里我们就可以找到jdbc驱动的jar包位置了。由于idea中已经初始出一个pom文件,我们这里就不必再复制下面的pom文件(这个文件的导入位置作者还没能成功处理,情况是导入依赖坐标后运行无反应,作者正在研究解决,这里暂时不做深入研究),直接复制jdbc驱动的jar包坐标然后插入即可。
注意:按照官方的说法,依赖要写在<dependencies>和</dependencies>之间,所以我们还要先写一个依赖包围,所以最终写入的应该是这样
方便大家导入,导入的代码如下:
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
(写到这里时又发现几个我的误解问题,直接新建了一个新项目做,所以pom内容变成这样了)
书写完右上角会出现这样一个图标,点击一下,maven就会重新构建,之后jdbc的jar包就可以被导入了。
如果没找到那个标,右键pom文件,按照图片的方法,也是可以的。
执行第一次报了个这个错,我猜测是maven的本地仓库里没有我书写的jar包坐标
提问点
(这里也想请教一下佬,为什么会在这里报错?如果按照文末我对maven的理解,maven如果发现坐标对应的不在本地仓库,应该会自动下载,而不是中断报错吧?难道是有什么其他原因?)
我直接按照推荐的尝试点击后,idea给我下载了该jar包,最终成功导入。
接下来测试一下这个包里能否连接数据库。
连接成功了。
这是测试连接代码:
package org.example;//导入包
import java.sql.*;
public class Main{
public static void main(String[] args) throws Exception{
//加载数据库驱动程序
try{
Class.forName("com.mysql.cj.jdbc.Driver");
}catch (ClassNotFoundException cne){
cne.printStackTrace();
}
String dburl = "jdbc:mysql://127.0.0.1:3306/";
try( Connection conn = DriverManager.getConnection(dburl,"用户名","密码");
Statement stmt = conn.createStatement())
{
System.out.println("连接成功");
}catch (SQLException se){
se.printStackTrace();
System.out.println("连接失败");
}
}
}
(用户名和密码更换为自己mysql的用户名和密码即可)
最后引进一个我理解的maven原理
首先通过pom文件里的地址参数,maven会先在本地仓库搜索是否存在这样的jar包
如果本地仓库不存在,则maven会连接到存储jar包的中央服务器下载需要的jar包到本地仓库,再导入到项目中。
结语:
写这篇文章时,我也又遇到了一些新问题和原来的错误理解,不过通过自己实践和针对查询,理解逐渐深入。或许有很多平凡的萌新和我一样,在技术的自学之路上,缺乏及时的援助,对未知的困难望而却步。但我相信,只要勇于面对困难,敢于不断尝试,问题终究会被解决。
也感谢给了我学习的平台和方向,为我提供帮助的佬们,感谢你们对我的指点鼓励与支持!
所写所感,既是对自己所学的复盘,巩固,积累,希望热心大佬解决一些问题,也是分享给其他想入门的萌新一些经验支持。同时,我也希望我的文章能给众多困于事业起步难的同胞们一点鼓励与支持,艰难的路途上,你们不是孤独一个人,有许许多多同样平凡的人,正勇于直面自己的脆弱,一点点书写自己的篇章!加油啊!