gradle使用过程遇到的一个关于out目录的问题

背景

昨天工作中遇到一个小问题,特意记录一下以免忘了;

反省:是自己对gradle构建工具不熟悉导致的这个问题;
以前没有用过这个构建工具,只是了解过,公司采用了这个构建工具;

现象

项目采用多模块构建的项目;
web模块下的XxxController引用了commons模块下的某个DTO类,在DTO类中添加了几个参数,重启之后controller类中接收的参数始终无法获取到新增的这几个。

初步怀疑是gradle编译的问题,重新clean build都不行,后来又怀疑是gradle缓存的问题,删除了本地的gradle仓库缓存也不行;

误打误撞

最初只知道编译之后,项目模块目录下会生成一个build目录存放编译后的class文件,查看了编译后的文件,里面是有新增的那几个参数的;
后来好奇为什么还会有一个out目录,这个目录也是编译后生成的吗?打开目录在对应的那个编译后的class文件,发现并没有新增的哪几个参数;
感觉看到了希望。。。

再次进行gradle clean操作,发现out目录根本没有被清理掉,至此,答案逐渐清晰;

猜想

历史中的某次操作,生成了out目录,且此目录不会被clean命令清零掉;
此后的编译,生成的build目录一直不生效;

go

手动删除项目下的所有out目录,重启,问题消失;

反思

课余时间深入学习一下gradle

搞清楚out目录是怎么出来的,为什么gradle clean命令都清理不掉;

为什么out目录下的class文件build目录下的class文件优先级要高?

加油


2019-02-25 更新
上网查询了一些资料,发现构建产生的out目录是idea编译时默认产生的,如下操作找到设置:
邮件项目名 -> Project Structure -> Modules -> {module名称}_main
在这里插入图片描述
从上图可看出,idea默认将编译结果放到了/Users/xxx/Documents/idea-project/mybatis-plus-sample/out/production/classes中。


使用IDEA进行Gradle构建时,可能会遇到"read timed out"错误。这个错误通常是由于网络连接问题Gradle配置不正确引起的。下面是一些可能的解决方法: 1. 检查网络连接:确保你的网络连接正常,没有任何限制或防火墙阻止Gradle的访问。 2. 增加Gradle的超时时间:在IDEA中打开Gradle设置,找到"Build, Execution, Deployment" -> "Build Tools" -> "Gradle" -> "Gradle VM options"。在这里增加以下参数来增加超时时间: -Dorg.gradle.internal.http.connectionTimeout=60000 -Dorg.gradle.internal.http.socketTimeout=60000 3. 清理Gradle缓存:有时候Gradle缓存中的某些文件可能会导致问题。你可以尝试清理Gradle缓存并重新构建项目。在终端或命令提示符中运行以下命令: On Windows: gradlew clean On macOS/Linux: ./gradlew clean 4. 更新Gradle版本:确保你正在使用最新版本的Gradle。你可以在项目的build.gradle文件中指定所需的Gradle版本。 5. 检查代理设置:如果你使用了代理服务器,请确保代理设置正确,并且Gradle可以通过代理访问所需的资源。 如果以上方法都无法解决问题,你可以尝试在Gradle构建过程中启用调试模式,以获取更详细的错误信息。在Gradle设置中,找到"Build, Execution, Deployment" -> "Build Tools" -> "Gradle" -> "Gradle VM options",增加以下参数: -Dorg.gradle.debug=true 希望以上方法能够帮助你解决问题
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值