TLDR:
我有一个 Grails 3 项目。run-app 命令运行良好。然后我将它检查到 Perforce 中。现在运行应用程序失败。
细节:
- Grails 版本:3.1.1
- Groovy 版本:2.4.5
- JVM版本:1.8.0_91
- 摇篮 2.13
% 圣杯清洁
构建成功
% grails 运行应用程序
FAILURE:构建失败并出现异常。
- 出了什么问题:任务“:processResources”执行失败。
无法将文件“/Volumes/Neo/singram/work/code/depot/dvdco/webapplications/nightcrawler/grails-app/i18n/messages.properties”复制到“/Volumes/Neo/singram/work/code/depot/dvdco” /webapplications/nightcrawler/build/resources/main/messages.properties'。
猜测原因:
Perforce,当一个文件未被签出进行编辑时,将使该文件不可写(chmod aw)。据我所知,run-app 调用 gradle 的 processResources 成功复制了一次有问题的文件,然后似乎试图在同一个构建周期中再次复制它并失败,因为新复制的文件是不可写的,因此它不能被覆盖自己的副本。
解决方法
如果我先签出整个项目进行编辑,则 run-app 命令成功。真的不想这样做,因为它会在签入期间引入错误的机会。
问题:
有没有比我的解决方法更好的方法?为什么 gradle 的 processResources 会多次复制相同的文件?是否有某种挂钩到 processResources 或 run-app 可用于“chmod -R u+w build”?