grails 3 运行-app 由于 perforce VCS 设置的文件权限而失败
grails 3 run-app fails due to file permissions set by perforce VCS
TLDR:
我有一个 Grails 3 项目。 运行-app 命令运行良好。然后我将它检查到 Perforce 中。现在 运行-app 失败了。
详情:
- Grails 版本:3.1.1
- Groovy版本:2.4.5
- JVM 版本:1.8.0_91
- Gradle 2.13
% grails 干净
构建成功
% grails 运行-app
失败:构建失败,出现异常。
- 出了什么问题:
任务“:processResources”的执行失败。
Could not copy file '/Volumes/Neo/singram/work/code/depot/dvdco/webapplications/nightcrawler/grails-app/i18n/messages.properties' to '/Volumes/Neo/singram/work/code/depot/dvdco/webapplications/nightcrawler/build/resources/main/messages.properties'.
猜测原因:
Perforce,当文件未被检出进行编辑时,将使该文件不可写 (chmod a-w)。据我所知,运行-app 调用 gradle 的 processResources 成功复制了一次有问题的文件,然后似乎试图在同一构建周期中再次复制它 并失败,因为新复制的文件不可写,因此无法用其自身的副本覆盖。
解决方法
如果我首先检出整个项目进行编辑,运行-app 命令会成功。真的不想这样做,因为它在签到过程中引入了出错的机会。
问题:
有没有比我的解决方法更好的方法?为什么 gradle 的 processResources 多次复制相同的文件?是否有某种挂钩到 processResources 或 运行-app 我可以用来 "chmod -R u+w build" ?
我认为有几个选项。要么 1) 将文件类型(如果由 Perforce 控制)更改为 +w 以使其可写;或 2) 更改工作区规范以包含 "allwrite" 选项以使所有文件都可写。 –
TLDR:
我有一个 Grails 3 项目。 运行-app 命令运行良好。然后我将它检查到 Perforce 中。现在 运行-app 失败了。
详情:
- Grails 版本:3.1.1
- Groovy版本:2.4.5
- JVM 版本:1.8.0_91
- Gradle 2.13
% grails 干净
构建成功
% grails 运行-app
失败:构建失败,出现异常。
- 出了什么问题:
任务“:processResources”的执行失败。
Could not copy file '/Volumes/Neo/singram/work/code/depot/dvdco/webapplications/nightcrawler/grails-app/i18n/messages.properties' to '/Volumes/Neo/singram/work/code/depot/dvdco/webapplications/nightcrawler/build/resources/main/messages.properties'.
猜测原因:
Perforce,当文件未被检出进行编辑时,将使该文件不可写 (chmod a-w)。据我所知,运行-app 调用 gradle 的 processResources 成功复制了一次有问题的文件,然后似乎试图在同一构建周期中再次复制它 并失败,因为新复制的文件不可写,因此无法用其自身的副本覆盖。
解决方法
如果我首先检出整个项目进行编辑,运行-app 命令会成功。真的不想这样做,因为它在签到过程中引入了出错的机会。
问题:
有没有比我的解决方法更好的方法?为什么 gradle 的 processResources 多次复制相同的文件?是否有某种挂钩到 processResources 或 运行-app 我可以用来 "chmod -R u+w build" ?
我认为有几个选项。要么 1) 将文件类型(如果由 Perforce 控制)更改为 +w 以使其可写;或 2) 更改工作区规范以包含 "allwrite" 选项以使所有文件都可写。 –