Linux 渐变复制任务导致文件权限问题 背景
我有一个JetBrains插件,我正在开发。最近,我从一个Linux 渐变复制任务导致文件权限问题 背景,linux,gradle,permissions,Linux,Gradle,Permissions,我有一个JetBrains插件,我正在开发。最近,我从一个Windows系统转到了Ubuntu系统。我正试图像以前一样正确地设置一切注意:我对Linux相当陌生 问题 当我运行以下Gradle脚本时,我遇到了一个明显的文件权限问题(如本问题的错误部分所示)注意:每当我构建项目时,都会自动调用此Gradle脚本。它在Windows上也能正常工作 如果我注释掉copy{…}闭包,那么一切都正常工作。我只需要手动复制所需的文件 错误 我试过的 我一直在使用UI修改IdeaProjects中插件项目文件
Windows
系统转到了Ubuntu
系统。我正试图像以前一样正确地设置一切注意:我对Linux相当陌生
问题
当我运行以下Gradle
脚本时,我遇到了一个明显的文件权限问题(如本问题的错误部分所示)注意:每当我构建项目时,都会自动调用此Gradle脚本。它在Windows上也能正常工作
如果我注释掉copy{…}
闭包,那么一切都正常工作。我只需要手动复制所需的文件
错误
我试过的
我一直在使用UI修改IdeaProjects
中插件项目文件夹的文件权限
我给每个人创建和删除文件的权限,以及我更改封闭文件的权限…
每个人都有读写
文件访问权限和创建和删除文件
文件夹访问权限
单击Change
再次运行Gradle脚本。。。相同的错误消息
思想
- Linux似乎不允许Gradle修改这些文件。我可以注释掉代码,自己做任何事情,但我需要允许Gradle拥有更高的控制权。但我不知道怎么做
- 我注意到,当我返回到
更改封闭文件的权限…
时,显示的权限不是我选择的<代码>其他
具有只读
文件访问权限和文件访问权限
文件夹访问权限。我不知道这是Ubuntu的常见行为、bug还是其他什么。
- 如果您知道如何在修复此问题时提供尽可能严格的访问权限,那将非常好
sudo
的方式运行脚本,则可以这样做,但这不是一个好主意
已编辑
由于要复制到项目的根目录,因此可以使用${projectDir}或${rootDir}
此外,通过使用内置的复制任务,您应该能够做到这一点,而无需进行闭包,并且它使您的脚本更干净,IMHO:
task copyClientLoc(type: Copy) {
from "build/libs/"
into "${rootDir}"
include "ChroMATERIAL-${project['version']}.jar"
fileMode = 0644
}
我的任务名称设置为动态。作为第二个预防措施,我正在复制正确的版本。我认为我无法完成内置的复制任务。我错了吗?在
Windows
上,进入“/”
表示项目的根文件夹。您的意思是,Linux上的进入“/”
意味着Linux中的根文件夹??那似乎不对!?在Linux中,/是系统的根文件夹,相当于Windows中的“C:\”。在Gradle中,项目的根文件夹由${projectDir}或${rootDir}给出,用于多项目生成。编辑后可将文件复制到项目的根目录。这是build.gradle
文件所在的目录。为什么任务名称需要是动态的?这将使它几乎不可能用作其他任务的依赖项?
FAILURE: Build failed with an exception.
* Where:
Build file
'/home/ciscorucinski/IdeaProjects/ChroMATERIAL/ChroMATERIAL/build.gradle' line: 100
* What went wrong:
A problem occurred evaluating project ':ChroMATERIAL'.
> Could not copy file '/home/ciscorucinski/IdeaProjects/ChroMATERIAL/ChroMATERIAL/build/libs/ChroMATERIAL-2.5.1.jar' to '/ChroMATERIAL.jar'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 0.139 secs
/ChroMATERIAL.jar (Permission denied)
오후 12:20:39: Task execution finished 'copyJar_v2.5.1'.
task copyClientLoc(type: Copy) {
from "build/libs/"
into "${rootDir}"
include "ChroMATERIAL-${project['version']}.jar"
fileMode = 0644
}