美文网首页
偶遇gradle问题思考

偶遇gradle问题思考

作者: 追梦小蜗牛 | 来源:发表于2020-06-14 14:37 被阅读0次
image.png

gradle简介

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具,它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。

  • build.gradle:等价于maven的pom.xml。
  • gradle.properties:定义一些常量供build.gradle使用。
  • settings.gradle:用来配置多模块,例如:include ':module-a',':module-b'。
  • gradle文件夹:这里面有两个文件,gradle-wrapper.jar和gradle-wrapper.properties,它们就是gradle wrapper,以通过命令gradle init来创建它们。
  • gradlew和gradlew.bat:这分别是linux下的shell脚本和windows下的批处理文件,它们的作用是根据gradle-wrapper.properties文件中的distributionUrl下载对应的gradle版本。
  • gradle仓库:gradle有三种仓库,maven仓库,ivy仓库以及flat本地仓库。
maven{
      url "..."
}
ivy{
      url "..."
}
flatDir{
      dirs 'xxx'
}

repositories{
     mavenCentral()
     jcenter()
     mavenLocal()
}

问题描述

突然有一天,当我想启动项目的时候,发现无法启动了,并且好像也没啥日志...然后我尝试着clean一下,竟然clean都失败..才意识到这个问题好像以前没见过。

继续执行build命令,也是一样failed,找到仅有的一点日志:Start Gradle Daemon ...

问题分析

检查了一下项目用的gralde的一些信息,发现了一些基本gradle配置信息,如下图:


image.png

我们项目用的方式是解析gradle-wrapper.properties,根据里面distributionUrl的属性值:https://services.gradle.org/distributions/gradle-4.7-bin.zip 去下载对应版本的gradle用来build和run,也可以指定本机安装的gradle,看自己选择。下面gradle JVM 配置的是JDK的路径,一开始检查,感觉配置都没有问题的,都没有改过,怎么突然就不行了...又去执行了build,再看下日志:Start Gradle Daemon ...看这几个字,看了好久,好像看到了一点东西:难道是gradle的守护线程启动不了了,被啥阻塞住了?

其实这个时候你可以用jps和jstack命令去看下线程栈,会发现确实有很多阻塞住的线程,好像是和jdk有关的,这其实能够推断出还是和jdk有点关系。下面这个图证明了这一点:


image.png

关键线索就是图上的那句话,当时程序报错的时候,这个home的路径指向的是jdk/jre ,不是根目录。重修修改之后,就正常了...

总结:静下心来,顺腾摸瓜。问题碰的多了,思考的多了,总结的多了,有些东西自然就清楚了,什么事情都需要有个过程。

相关文章

网友评论

      本文标题:偶遇gradle问题思考

      本文链接:https://www.haomeiwen.com/subject/homxxktx.html