Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 渐变复制任务导致文件权限问题 背景_Linux_Gradle_Permissions - Fatal编程技术网

Linux 渐变复制任务导致文件权限问题 背景

Linux 渐变复制任务导致文件权限问题 背景,linux,gradle,permissions,Linux,Gradle,Permissions,我有一个JetBrains插件,我正在开发。最近,我从一个Windows系统转到了Ubuntu系统。我正试图像以前一样正确地设置一切注意:我对Linux相当陌生 问题 当我运行以下Gradle脚本时,我遇到了一个明显的文件权限问题(如本问题的错误部分所示)注意:每当我构建项目时,都会自动调用此Gradle脚本。它在Windows上也能正常工作 如果我注释掉copy{…}闭包,那么一切都正常工作。我只需要手动复制所需的文件 错误 我试过的 我一直在使用UI修改IdeaProjects中插件项目文件

我有一个JetBrains插件,我正在开发。最近,我从一个
Windows
系统转到了
Ubuntu
系统。我正试图像以前一样正确地设置一切注意:我对Linux相当陌生

问题 当我运行以下
Gradle
脚本时,我遇到了一个明显的文件权限问题(如本问题的
错误部分所示)注意:每当我构建项目时,都会自动调用此Gradle脚本。它在Windows上也能正常工作

如果我注释掉
copy{…}
闭包,那么一切都正常工作。我只需要手动复制所需的文件

错误 我试过的 我一直在使用UI修改
IdeaProjects
中插件项目文件夹的文件权限

  • 我给每个人
    创建和删除文件的
    权限,以及我
    更改封闭文件的权限…
  • 每个人都有
    读写
    文件访问权限和
    创建和删除文件
    文件夹访问权限
  • 单击
    Change
  • 再次运行Gradle脚本。。。相同的错误消息
  • 思想
    • Linux似乎不允许Gradle修改这些文件。我可以注释掉代码,自己做任何事情,但我需要允许Gradle拥有更高的控制权。但我不知道怎么做
    • 我注意到,当我返回到
      更改封闭文件的权限…
      时,显示的权限不是我选择的<代码>其他
    具有
    只读
    文件访问权限和
    文件访问权限
    文件夹访问权限。我不知道这是Ubuntu的常见行为、bug还是其他什么。
    • 如果您知道如何在修复此问题时提供尽可能严格的访问权限,那将非常好
    没错,您不能(也不应该)将文件复制到linux设备中的根文件夹中。如果您以
    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
    }