Maven学习笔记(三)——*仓库与依赖管理篇
前提
这篇博文是这套Maven学习笔记的第三篇——*仓库与依赖管理篇,主要内容包含Maven*仓库、Maven依赖管理等。如果需要了解有关Maven的综述信息或博文的索引信息,请移步:
《综述篇》
Maven*仓库
打开Maven*仓库可以看到如下的页面
最上方的搜索框是它最重要的构件。我们可以用它来搜索几乎任何Java依赖。
比如我们需要用到mysql-connector.jar,就搜索mysql connector
。可以看到,一共搜索到3218个相关的结果,并且第一个就是我们想要的。
点击第一个结果,进入到这个依赖的详情页面
可以看到页面的下方有该依赖的全部历史版本,我们点击第一个,即最新版本8.0.12
进入到8.0.12的详情页面,这个页面是最重要的,包含获取该依赖的多种方式的页面。
可以看到,第一个红色方框圈出来的链接,点击之后就可以下载该依赖的JAR包,**但是我之前说过,使用Maven之后我们就不需要手动下载和管理依赖了。因此,下方大的红色方框里的这几行代码才是我们感兴趣的。**具体的作用和使用方法本文稍后面的内容会解释清楚。
额外插一句,大家可以看到,大的红色方框里面有七个选项卡,这也就代表了在七种依赖管理工具中引用该依赖的相关代码。熟悉Android和Android Studio的同学可能会注意到,第二个选项卡就是Gradle(Android Studio使用的依赖管理工具),复制里面的代码到Gradle配置文件中就可以为你的Android APP添加对该依赖的引用。
创建一个集成了Maven配置的Java Web工程
①首先,启动NetBeans IDE;
②依次选择文件
->新建项目(W)...
->Maven
->Web应用程序
->下一步
;
③设置好项目名称
和项目位置
,然后点击下一步
;
④设置好Tomcat服务器,然后点击完成
,如果未安装,请移步:
《服务器、数据库集成开发工具包》
普通工程与Maven工程的对比
经过了大约5分钟的等待,IDE后台终于下载好了所需的文件,工程就创建好了。这里,我创建了两个同名的Java Web工程(都叫MyFirstWebApp,上面是普通Java Web工程,下面是Maven Web工程)。我们首先对比一下它们的工程树结构:
①Maven工程的“地球”图标左上方有一个小写的"m";
②因为Maven可以管理依赖库,所以Maven工程没有库
和测试库
,而多出来两个依赖关系文件夹;
③上方配置文件
的位置在下方变成了项目文件,这意味着两个工程的配置方式不同。
特别需要注意的是,项目文件
这个文件夹展开后包含一个pom.xml
文件,POM即Project Object Model——工程对象模型,Maven中大部分的配置都是基于这个pom.xml
文件的。
一个依赖管理的简单例子
举一个简单的例子,我们给新的工程写了DBManager,使用MySQL数据库:
......
public static Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException | InstantiationException
| IllegalAccessException | SQLException ex) {
Logger.getLogger(DBManager.class.getName()).log(Level.SEVERE, null, ex);
}
return connection;
}
......
其中,try
块中第一句就用到了mysql的驱动,也就是mysql-connector.jar
,那么我们现在就需要进行配置把这个依赖引进来了。
配置POM——引入依赖
打开pom.xml文件,因为要添加依赖信息,所以我们找到<dependencies>
标签。可以看到,里面已经有一个<dependency>
了。
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
这个时候,文章开头我说过的很重要的那段代码就起到关键作用了
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
</dependency>
我们把这段代码复制到<dependencies>
标签里面,和上一个<dependency>
并列,这样,引用依赖的配置就完成了。
最后一步
需要打包工程为WAR包时,依次右键点击工程名
->使用依赖关系构建
,就可以在工程根目录下的target
目录中看到生成好的WAR包,依赖的相关文件也就是在这个过程中才被从本地仓库复制出来并打包进WAR包里的。
后记
因为篇幅关系,省略了一部分知识未提,比如<groupId>
、<artifactId>
和<version>
构成了一个依赖在*仓库中的唯一标识(即坐标),这就像我们在三维空间中(x,y,z)
三个坐标唯一的定位一个点一样。有疑问的话可以在下方直接回复,也可以自己查一查加深理解。