无网络情况下Java项目依赖

问题描述

依赖gradle加载依赖的Java项目,在可以连接网络条件下,可以加载中央仓库或自定义仓库完成依赖加载,具体可参考

Intellij IDEA 利用gradle从maven仓库中加载第三方包

在无网络的情况下, 如何利用已下载的gradle缓存完成依赖加载?做法是将gradle缓存转为m2形式解 决依赖问题。

Java依赖

gradle

依赖gradle加载依赖的Java项目, jar包缓存存储位置为用户目录下的.gradle文件夹, eg. ($USER_DIR/.gradle/caches/modules-2/files-2.1)

m2

利用maven加载依赖, jar位置为用户目录下的.m2文件夹, eg. ($USER_DIR/.m2/repository/)

依赖转换

添加本地依赖

修改依赖配置为mavenLocal(), 依赖加载用户目录下.m2文件夹

repositories {
    //其他依赖
    ...

    //本地依赖
    mavenLocal()
}

gradle缓存转m2依赖

发现gradle的缓存与m2的依赖关系为

gradle: org.apache.commons -> m2: repository/org/apache/commons/

shell转换代码如下:

#!/bin/bash
# Description: 将gradle中的依赖转换为m2
#
# Author: Yang Meng ([email protected])


# 创建.m2格式依赖
base_dir=`pwd`
dir_name=${base_dir}/"repository"
rm ${dir_name} -rf
mkdir -p ${dir_name}

# 遍历.gradle中依赖
cd ./files-2.1

# 第一层
for level_1 in `ls`
do
    # 第二层
    cd ${level_1}
    for level_2 in `ls`
    do

        # 第三层
        cd ${level_2}
        for level_3 in `ls`
        do

            # 第四层
            cd ${level_3}
            for item in `ls`
            do
                des_dir=${dir_name}/${level_1//\./\/}/${level_2}/${level_3}
                mkdir -p ${des_dir}
                cp ${item}/* ${des_dir}
            done
            cd -
        done
        cd ../
    done
    cd ../
done

依赖拷贝

将代码生成的repository文件夹拷贝到用户目录的.m2文件夹下, 即可解决在无网络条件下的Jar依赖问题。

总结

无网络条件下利用gradle的缓存解决jar包加载问题。

猜你喜欢

转载自blog.csdn.net/ymaini/article/details/80724248
今日推荐