前言:当下最流行的依赖管理非maven莫属了,不管是sping项目还是其他大型项目,基本上都属于maven项目,都是使用maven来管理依赖。本篇文章通过一个简单的例子带你快速学习maven
项目准备
创建两个不同的maven工程:example-common,example-component
并设置pom.xml如下
example-common
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>example-common</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>
example-component
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>example-component</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>example-common</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
非常简短的pom配置,只是在example-component项目中引入了example-common打包后生成的依赖。
然后在example-common项目中新建一个类com.example.Utils
package com.example;
public class Utils {
public static void test(){
System.out.println("com.example.Utils的test方法执行了");
}
}
最后在example-component项目中新建一个测试类com.example.Main
package com.example;
public class Main {
public static void main(String[] args) {
Utils.test();
}
}
加载依赖
你发现Utils.test()爆红了?没关系这是正常现象,因为我们还没把example-common打包到本地maven仓库
打包完后就可以在本地仓库中见到它
你可以在左上角:文件>设置,然后搜索“maven”找到你的本地maven仓库以及settings.xml配置文件
这时,我们转到example-component项目中reload一下,Utils.test()就不会爆红了
版本管理
居然还爆红?别担心,这是因为example-component项目中pom.xml引入的example-common依赖的版本不对
我们修改一下example-component项目的pom文件,将version字段改成1.0-SNAPSHOT
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>example-common</artifactId>
<!-- <version>2.0-SNAPSHOT</version> 旧 -->
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
再次重新加载,这次真的成功了,跑起来试试
这部分其实也可以将example-common项目的pom文件的版本改成2.0-SNAPSHOT然后重新打包,example-component项目的pom不去改变,也能做到相同的效果,具体实现略,留给读者自己练习。
到此一个简短的示例已经完成!
举一反三
当我更新了example-common项目之后要如何才能在example-component项目体现出来?只需要两步
1.在example-common项目中运行maven install
2.在example-component项目中重新加载maven
注意
版本号一定要对上,不然加载的就是旧的依赖。
还有一件事,如果你的settings.xml文件设置了私有服务器的地址(公司内网),那么有可能你加载的依赖并不是最新的本地修改,而是加载了私服的maven仓库中保存的依赖,那么要加载最新的依赖可以通过:
1.修改版本号然后maven install一下,这样保存到本地的依赖就比私服上的要新,同时记得在另一个项目中修改依赖的版本号然后reload,这样就能加载到最新的依赖。
2.直接从本地maven仓库(本地文件夹)中找到对应的(从私服上下载的)依赖并删除,然后maven install一下本地项目的更新,这样就可以直接在另一个项目中reload,无需修改版本号就能加载到最新的依赖。