项目依赖加载出现问题?没有加载到最新的依赖?示例展示maven仓库与maven依赖加载

前言:当下最流行的依赖管理非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,无需修改版本号就能加载到最新的依赖。

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fan_11235813

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值