0

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”?

4

1 回答 1

1

有几个选择,我想。1)将文件类型(如果受 Perforce 控制)更改为 +w 以使其可写;或 2) 更改工作空间规范以包含“allwrite”选项以使所有文件可写。——</p>

于 2016-05-07T01:13:08.733 回答