背景:  android studio 在无法下载依赖的情况下 , 仅 使用 mavenLocal()

本地 .gradle 下有对应依赖 , .m2下没有

故将.gradle下的 带hash名称文件夹中的依赖 转换为 .m2上的依赖

import os
import io
import sys
sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') patho = '' def backup_file(path, path_two):
path = get_gradle_path(path_two)
path_two = path_two.replace('/', '\\')
print (path_two)
if not os.path.exists(path_two):
os.makedirs(path_two)
"""
:param path: 路径1
:param path_two: 路径2
:return:
"""
if os.path.isdir(path) and os.path.isdir(path_two): # 判断传入的值为文件夹
a = os.listdir(path) # 读取该路径下的文件为列表
print (a[0])
print (len(a))
# if os.path.isdir(path_two):
for i in a:
if os.path.isdir(path + '\\' + i): # 判断传入的值为文件夹
patho = path + '\\' + i
af = os.listdir(patho) # 读取该路径下的文件为列表
print (af)
for m in af:
po = os.path.join(patho, m) # 路径1拼接
po_two = os.path.join(path_two, m) # 路径2拼接
with open(po, "rb") as f:
res_one = f.read()
with open(po_two, "wb") as a:
a.write(res_one)
print("{}复制成功".format(i))
else:
po = os.path.join(path, i) # 路径1拼接
po_two = os.path.join(path_two, i) # 路径2拼接
with open(po, "rb") as f:
res_one = f.read()
with open(po_two, "wb") as a:
a.write(res_one)
print("{}复制成功".format(i))
else:
print("不是文件夹") path_two = ''
pathsimple = r'D:\xxxxx\workspace\.gradle\caches\modules-2\files-2.1'
def get_gradle_path(pathtwo):
ones = pathtwo.split('/')
print (ones)
pathsimple = r'D:\xxxxx\workspace\.gradle\caches\modules-2\files-2.1'
for m in range(len(ones) - 5):
print (ones[m + 5])
pathsimple += '\\' + ones[m + 5]
res = ''
if len(ones) == 8:
sims = pathsimple.split('\\')
index = 0
for m in sims:
res += m + '\\'
index += 1
if len(ones) == 9:
sims = pathsimple.split('\\')
index = 0
for m in sims:
if index == 7 :
res += m + '.'
else:
res += m + '\\'
index += 1
if len(ones) == 10:
sims = pathsimple.split('\\')
index = 0
for m in sims:
if index == 7 or index == 8:
res += m + '.'
else:
res += m + '\\'
index += 1
if len(ones) == 11:
sims = pathsimple.split('\\')
index = 0
for m in sims:
if index == 7 or index == 8 or index == 9:
res += m + '.'
else:
res += m + '\\'
index += 1
if len(ones) == 12:
sims = pathsimple.split('\\')
index = 0
for m in sims:
if index == 7 or index == 8 or index == 9 or index == 10:
res += m + '.'
else:
res += m + '\\'
index += 1
print (res)
if os.path.exists(res):
print ('转换后的 gradle地址 存在', res)
else:
print ('不存在,请手动传递地址')
return res
# get_gradle_path('C:/Users/xxxxx/.m2/repository/com/googlecode/json-simple/json-simple/1.1')
# backup_file('', 'C:/Users/xxxxx/.m2/repository/com/zhy/autolayout/1.4.5') def getbypath (path):
pathtwoin = 'C:/Users/xxxxx/.m2/repository'
paths = path.split(':')
pathsone = paths[0].split('.')
print (pathsone)
print (paths)
index = 0
for p in paths:
if index == 0:
for pa in pathsone:
pathtwoin += '/' + pa
else :
pathtwoin += '/' + p
index += 1
print (pathtwoin)
backup_file('', pathtwoin) getbypath('com.squareup.okhttp3:okhttp:3.8.0') def listpath (need_path):
# need_path = ['com.android.support:support-compat:26.1.0',
# 'com.android.support:support-media-compat:26.1.0',
# 'com.android.support:support-core-utils:26.1.0',
# 'com.android.support:support-core-ui:26.1.0']
print (need_path[0])
print (len(need_path))
for pat in need_path:
getbypath(pat) # listpath() def get_file_list():
data = []
for line in open(r'C:\\Users\\xxxxx\\Desktop\\test.txt',"r"): #设置文件对象并读取每一行文件
if 'resolve' in line:
data.append(line[26:-1]) #将每一行文件加入到list中
print (data)
listpath(data) # get_file_list() # get_file_list() 根据指定的文件地址,查询文件中包含 resolve的行,并截取对应的依赖名称
# listpath() 根据指定的插件list,获取本地的 .m2 的路径,若没有则创建对应路径
# getbypath() 根据指定的插件名称,获取本地的 .m2 的路径,若没有则创建对应路径
# backup_file() 根据指定路径 把 对应的 .gradle\caches\modules-2\files-2.1 下的依赖 copy到.m2 对应的路径下

---------------------------------------------------------------------------------------------

上半部分是可以单独copy指定的依赖

下面是全部转换,使用的时候,全局替换一下gradle缓存和.m2地址对应的字符串即可

----------------------------------------------------------------------------------------------

import os
import io
import sys
sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
# 将 caches\modules-2\files-2.1 下的 依赖格式 都修改为 .m2格式的依赖
# 1. 获取files-2.1下的路径
# 2. for 循环 获取文件夹名称, 再获取下一层,下下一层的文件名称 ,然后组装为依赖名
patho = '' def backup_file(path, path_two):
path = get_gradle_path(path_two)
path_two = path_two.replace('/', '\\')
print (path_two)
if not os.path.exists(path_two):
os.makedirs(path_two)
"""
:param path: 路径1
:param path_two: 路径2
:return:
"""
if os.path.isdir(path) and os.path.isdir(path_two): # 判断传入的值为文件夹
a = os.listdir(path) # 读取该路径下的文件为列表
print (a[0])
print (len(a))
# if os.path.isdir(path_two):
for i in a:
if os.path.isdir(path + '\\' + i): # 判断传入的值为文件夹
patho = path + '\\' + i
af = os.listdir(patho) # 读取该路径下的文件为列表
print (af)
for m in af:
po = os.path.join(patho, m) # 路径1拼接
po_two = os.path.join(path_two, m) # 路径2拼接
with open(po, "rb") as f:
res_one = f.read()
with open(po_two, "wb") as a:
a.write(res_one)
print("{}复制成功".format(i))
else:
po = os.path.join(path, i) # 路径1拼接
po_two = os.path.join(path_two, i) # 路径2拼接
with open(po, "rb") as f:
res_one = f.read()
with open(po_two, "wb") as a:
a.write(res_one)
print("{}复制成功".format(i))
else:
print("不是文件夹") path_two = ''
pathsimple = r'D:\xxxxxxx\workspace\.gradle\caches\modules-2\files-2.1'
def get_gradle_path(pathtwo):
ones = pathtwo.split('/')
print (ones)
pathsimple = r'D:\xxxxxxx\workspace\.gradle\caches\modules-2\files-2.1'
for m in range(len(ones) - 5):
print (ones[m + 5])
pathsimple += '\\' + ones[m + 5]
res = ''
if len(ones) == 8:
sims = pathsimple.split('\\')
index = 0
for m in sims:
res += m + '\\'
index += 1
if len(ones) == 9:
sims = pathsimple.split('\\')
index = 0
for m in sims:
if index == 7 :
res += m + '.'
else:
res += m + '\\'
index += 1
if len(ones) == 10:
sims = pathsimple.split('\\')
index = 0
for m in sims:
if index == 7 or index == 8:
res += m + '.'
else:
res += m + '\\'
index += 1
if len(ones) == 11:
sims = pathsimple.split('\\')
index = 0
for m in sims:
if index == 7 or index == 8 or index == 9:
res += m + '.'
else:
res += m + '\\'
index += 1
if len(ones) == 12:
sims = pathsimple.split('\\')
index = 0
for m in sims:
if index == 7 or index == 8 or index == 9 or index == 10:
res += m + '.'
else:
res += m + '\\'
index += 1
print (res)
if os.path.exists(res):
print ('转换后的 gradle地址 存在', res)
else:
print ('不存在,请手动传递地址')
return res def getbypath (path):
pathtwoin = 'D:/xxxxxxx/workspace/.m2/repository'
paths = path.split(':')
pathsone = paths[0].split('.')
print (pathsone)
print (paths)
index = 0
for p in paths:
if index == 0:
for pa in pathsone:
pathtwoin += '/' + pa
else :
pathtwoin += '/' + p
index += 1
print (pathtwoin)
backup_file('', pathtwoin) def listpath (need_path):
print (need_path[0])
print (len(need_path))
for pat in need_path:
getbypath(pat) def get_dependencies():
files_path = r'D:\xxxxxxx\workspace\.gradle\caches\modules-2\files-2.1';
dependencies_data = []
if os.path.isdir(files_path): # 判断传入的值为文件夹
dirstpath = os.listdir(files_path) # 读取该路径下的文件为列表
for i in dirstpath:
if os.path.isdir(files_path + '\\' + i): # 判断传入的值为文件夹
path1 = path1 = files_path + '\\' + i
dirstpath1 = os.listdir(path1)
for i1 in dirstpath1:
path2 = path1 + '\\' + i1
if os.path.isdir(path2): # 判断传入的值为文件夹
dirstpath2 = os.listdir(path2)
for i2 in dirstpath2:
str = i + ':' + i1 + ':' + i2
dependencies_data.append(str)
print (dependencies_data)
listpath(dependencies_data) get_dependencies()

  

将.gradle下的 带hash名称文件夹中的依赖 转换为 .m2上的依赖的更多相关文章

  1. Selector、shape详解,注意这两种图像资源都以XML方式存放在drawable不带分辨率的文件夹中

    Selector.shape详解(一) Selector的结构描述: <?xml version="1.0" encoding="utf-8"?> ...

  2. python批量修改一个文件夹下含多个文件夹中的所有图片名称

    网上能找到的,大多是只对一个文件夹下所有图片进行重命名的代码. 这边实现的是,一个文件夹下有多个文件夹内图片的重命名. rename.py #!/usr/bin/python # -*- coding ...

  3. Tomcat下webapps夹中root文件夹作用及如何发布项目至root文件夹中

    转载请注明出处: tomcat的root文件夹下面默认是tomcat的管理程序,但是如果你把自己的web项目发布到root下面的话,你可以不通过项目名直接访问你的项目,比如,你见了一个名为Test的项 ...

  4. apk当安装程序将文件复制到手机自带的指定文件夹

    项目已获得,今天.apk文件以获得另一个非调试手机,发现一个问题. 由于涂料.所以绘图数据的点存储在一个.txt文字档.把它用usb传到指定目录下的,可是明显不科学,由于用户下载了你的.apk文件,你 ...

  5. php获取指定文件夹中文件名称

    /** * php获取指定文件夹中文件名称 * @author jackie <2018.10.10> */ public static function getFileName($fil ...

  6. [R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。

    解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独 ...

  7. java基础 File 递归删除文件夹中所有文件文件夹 目录(包含子目录)下的.java文件复制到e:/abc文件夹中, 并统计java文件的个数

    File 递归删除文件夹中所有文件文件夹 package com.swift.kuozhan; import java.io.File; import java.util.Scanner; /*键盘录 ...

  8. windows下使用RoboCopy命令进行文件夹增量备份

    RoboCopy,它是一个命令行的目录复制命令,自从Windows NT 4.0 开始就成为windows 资源工具包的一部分,然后在Windows Vista.Windows 7和 Windows ...

  9. iis7下查看站点日志对应文件夹

    原文:iis7下查看站点日志对应文件夹 IIS7下面默认日志文件的存放路径:%SystemDrive%\inetpub\logs\LogFiles 查看方法:点击对应网站 -> 右侧功能视图 - ...

  10. 使用linq获得当前文件夹下的下一级满足条件的文件夹

    使用linq获得当前文件夹下的下一级满足条件的文件夹.             SPFolderCollection subAlbums = Folder.SubFolders;            ...

随机推荐

  1. SQLServer统计采集数据库相关信息

    在MS Sql Server中可以能过以下的方法查询出磁盘空间的使用情况及各数据库数据文件及日志文件的大小及使用利用率: 1.查询各个磁盘分区的剩余空间:Exec master.dbo.xp_fixe ...

  2. 分布式文件系统 FastDFS 整理

    1.FastDFS 1.1.了解基础概念 1.1.1.什么是分布式文件系统? 全称:Distributed File System,即简称的DFS 这个东西可以是一个软件,也可以说是服务器,和tomc ...

  3. frp内网穿透:基于centos8 云服务器和debian12客户端服务器

    前言 入了一台本地工控机盒子,刷成了debian12系统,性能比云服务器要好一点,现在想要远程访问这台盒子,但是盒子又没有公网地址,所以想通过内网穿透的方式,通过云服务器转发请求实现内网穿透.原来体验 ...

  4. redis基本数据结构-字符串

    reids字符串数据结构相关命令    序号 命令 命令实例 意义    1 set key value set bar 1 设置key为bar的值为"1"   2  incr k ...

  5. 使用C#/.NET解析Wiki百科数据实现获取历史上的今天

    创建一个webapi项目做测试使用.   创建新控制器,搭建一个基础框架,包括获取当天日期.wiki的请求地址等 创建一个Http请求帮助类以及方法,用于获取指定URL的信息   使用http请求访问 ...

  6. openEuler 安装 DocekrCE

    就个人而言,openEuler 算是不错的国产化操作系统."一脉传承"自redhat让实际的使用体验非常丝滑.软件源都是国内的,开箱即用,漏洞的补丁发的也挺及时.美中不足的是貌似 ...

  7. Windows版本免费PyMol的安装

    技术背景 在前面一篇博客中,我们介绍过在Linux平台下安装和使用免费版本的PyMol.其实同样的这个免费版在Windows平台上(这里以win11为例)也是支持的. 安装流程 这个免费版本的PyMo ...

  8. 为什么我@Value中明明显示了值,他却是null

    今天尝试把一些重要东西写入application.yml里,结果在使用的时候发现value取不出来值原因有2个: 1.没有写@compent,没有把这个类交给spring管理 2.在service层n ...

  9. 介绍一款新奇的开源操作系统:GodoOS

    在快节奏的现代办公环境中,一款高效.集成化的操作系统无疑是提升工作效率的利器.今天,我们要为您隆重介绍 --GodoOS,一款专为内网办公环境设计的全能操作系统.它不仅仅是一个工具,更是您团队协作与文 ...

  10. 7月新特性 | 软件开发生产线CodeArts发布多项新特性等你体验!

    华为云软件开发生产线CodeArts是一站式.全流程.安全可信的云原生DevSecOps平台,覆盖需求.开发.测试.部署.运维等软件交付全生命周期环节,为开发者打造全云化研发体验.2024年7月,Co ...