maven本地依赖local_repository,适用于没有或不方便放到nexus的私有包需要放到pom依赖管理的场景

需求来源

模拟场景是有一个服务商提供的定制包,但是公司内部又没有自建nexus仓库或者这个包不方便放到仓库中,

在我的场景是以前的老代码依赖的一个包,由于环境迁移将老的nexus仓库已经废弃了,而新的环境又拉不到这个包,此时有两个方案,一个是将生产环境里面这个包拿出来放到新的迁移环境的nexus仓库中去,或者是按照下面的方法把包放到项目内部进行管理依赖

解决方案实现

  1. 假设我们有一个二方或三方包长这样,但是它没有在任何公网或内网仓库内能访问到
  2. 这个包目前非常简单,只有一个接口待实现,实际情况下可能还有很多东西,但是不影响,我们直接进行打包,最后会得到一个jar包
  3. 将这个jar包通过命令打包到我们本地的maven仓库中,这一步主要是为了自动生成它对应的pom文件,参数内请注意运行位置和jar包位置,如果当前运行位置不在jar包的目录下,可以设置绝对路径,例如-Dfile=D:/projects/localFacade/target/localFacade-1.0.jar
    mvn install:install-file -Dfile=localFacade-1.0.jar -DgroupId=com.xsx -DartifactId=localFacade -Dversion=1.0 -Dpackaging=jar 
  4. 执行成功后我们可以在.m2的本地maven仓库内根据路径找到这个包,现在是长这样,我们需要拿到这个.pom文件
  5. 在自己的项目内创建一个文件夹,并根据groupId和artifactId以及版本号创建目录,跟.m2文件夹内的目录一致,并且将jar包和上面的.pom文件放进来,如下所示
  6. 在需要依赖这个包的模块内增加repository配置,层级在project下即可,project.basedir地址为当前模块的目录,不是整个项目的根目录,我放在父pom下的,所以层级中配置的是${project.basedir}/../localRepo,否则如果localRepo在模块下同级,那就不需要中间的“../
        <repositories>
            <repository>
                <id>localRepo</id>
                <name>localRepo</name>
                <url>file://${project.basedir}/../localRepo</url>
            </repository>
        </repositories>
  7. 在dependency里面添加maven依赖,然后刷新maven配置等待加载依赖,然后项目中就可以正常引用私有包中的类
        <dependency>
            <groupId>com.xsx</groupId>
            <artifactId>localFacade</artifactId>
            <version>1.0</version>
        </dependency>
  8. 完整目录层级如下
  9. 模块1(md1)中的完整pom文件如下
    <?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>
        <parent>
            <groupId>org.example</groupId>
            <artifactId>localRepoTest</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <artifactId>md1</artifactId>
    
        <properties>
            <maven.compiler.source>11</maven.compiler.source>
            <maven.compiler.target>11</maven.compiler.target>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
        <dependencies>
            <dependency>
                <groupId>com.xsx</groupId>
                <artifactId>localFacade</artifactId>
                <version>1.0</version>
            </dependency>
        </dependencies>
        <repositories>
            <repository>
                <id>localRepo</id>
                <name>localRepo</name>
                <url>file://${project.basedir}/../localRepo</url>
            </repository>
        </repositories>
    </project>
  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值