1. 起因
    1. 某一天一个同事,在看那个glide,然后我路过,看到他为何不编译“glide”项目(他说,编译中出错,反正都是看源码而已,所以就懒得搞,然后我出于“好心”,给他弄一下,我擦)
    2. 报错:
      1. Process 'command 'git'' finished with non-zero exit value 128
        1. 这个简单,因为他是直接从github那里下载(得到一个zip文件,天朝clone github的代码很慢的)的,而不是直接clone出来,所以执行时,报这个错,很正常,只需要把在该文件夹中执行"git init"就行了
      2. Cannot evaluate module disklrucache : Configuration with name 'default' not found.
        1. 这个就比较麻烦了。是因为,检查到模块"disklrucache",只是一个“空目录”,所以gradle,不认识它。就直接报错。
      3. 问题来了:为什么 模块"disklrucache"是空目录,是因为在settings.gradle中声明的更新“外部模块”
        1. exec { commandLine "git", "submodule", "update", "--init", "--recursive"}
        2. 执行完,没有把“disklrucache”进行更新
        3. 然后进入正题了,git submodule
        4. 直接敲"git submodule"能查看当前git中有哪些子外部模块(相关文章:http://www.tuicool.com/articles/jqiEJzU
        5. 我查看后,没有声明disklrucache作为“子外部模块”,只留了那个目录在那里
        6. 只好查看一下,如何添加“子外部模块”
        7. 添加
为当前工程添加submodule,命令如下:
git submodule add 仓库地址 路径
  1. 以下代码,是我无聊写的。可以忽略的
def getGitModules(){
File configFile = file(".gitmodules")
println configFile.getAbsolutePath()
def lines = configFile.readLines()
String line = ""
String path = ""
String url = ""
Map<String,String> gitModules = new HashMap<>()
for (int i = 0; i < lines.size(); i++) {
line = lines.get(i)
if(line.startsWith("[submodule")){
path = lines.get(i+1).split(" = ")[1]
url = lines.get(i+2).split(" = ")[1]
//println String.format("path:%s",path)
//println String.format("url:%s",url)
if (url.endsWith(".git")) {
gitModules.put(path,url)
}
}
}
gitModules
}
 
def getGitModulesByClone(){
Map<String,String> gitModules = getGitModules()
String path = ""
String url = ""
for(String key: gitModules.keySet()){
File moduleDir = file(key)
if (moduleDir.exists()) {
moduleDir.delete()
}
path = key
url = gitModules.get(key)
println String.format("path:%s",path)
println String.format("url:%s",url)
try{
exec {
commandLine "git", "submodule", "add", url , key
}
}catch(Exception e){
 
}
}
}
def gitInit(){
exec {
commandLine "git", "init"
}
println("gitInit")
}
def gitSubmoduleUpdate(){
/**
try{
exec {
commandLine "git", "submodule", "update", "--init", "--recursive"
}
println("gitSubmoduleUpdate")
}catch(Exception e){
getGitModulesByClone()
}
*/
getGitModulesByClone()
}
 
try{
gitSubmoduleUpdate()
}catch(Exception e){
gitInit()
gitSubmoduleUpdate()
}
  1. 结论
    1. 注意事项

最新文章

  1. 通读AFN③--HTTPS访问控制(AFSecurityPolicy),Reachability(AFNetworkReachabilityManager)
  2. nodejs——qureystring的作用
  3. (33)odoo中产品价格字段
  4. 黑马程序员:Java编程_多线程
  5. DP(优化) UVALive 6073 Math Magic
  6. POJ 3164 Command Network 最小树形图模板
  7. R 语言画图的基本参数
  8. zoj 3787 Access System
  9. QT中读取文本数据(txt)
  10. Centos6.4下tar包安装最新版Mysql5.6
  11. windows phone (22) 隐藏元素
  12. [Java] Java读取Word文档
  13. rsync - 远程同步工具
  14. Vue 旅游网首页开发3 - Ajax获取首页数据
  15. SQL Server同一表不同列数据同步
  16. linux python 安装到用户目录
  17. 红黑树与AVL
  18. EF Core 迁移过程遇到EF Core tools version版本不相符的解决方案
  19. LintCode: Identical Binary Tree
  20. 914. X of a Kind in a Deck of Cards

热门文章

  1. flex 布局的复习
  2. PAT (Advanced Level) Practise 1001 解题报告
  3. XamarinAndroid组件教程设置动画的设置插值器
  4. 在Node.js中在保持目录结构的情况下压缩指定目录
  5. BZOJ.1071.[SCOI2007]组队(思路)
  6. docker 导出导入镜像
  7. C++,java信息,文件传输
  8. 使用纯CSS制作展开合并立方体特效
  9. BZOJ5100 : [POI2018]Plan metra
  10. 从web到搭建ssm环境