gpt4 book ai didi

Gradle SSH 插件复制父文件夹而不仅仅是文件

转载 作者:行者123 更新时间:2023-12-02 10:55:38 26 4
gpt4 key购买 nike

我正在使用this Gradle SSH plugin 。它有一个 put 方法,可以将文件从我的本地计算机移动到 session 连接到的计算机。

我的应用程序已完全构建并存在于 build/app 中,我正在尝试将其移动到 /opt/nginx/latest/html/ ,以便该文件build/app/index.html 将存在于 /opt/nginx/latest/html/index.html 并且 build/app 的任何子文件夹> 也被复制过来。

我的build.gradle:

buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.hidetake:gradle-ssh-plugin:1.1.4'
}
}

apply plugin: 'org.hidetake.ssh'

remotes {
target {
host = '<my target vm>'
user = 'user'
password = 'pass'
}
}

...

task deploy() << {
ssh.run {
session(remotes.target) {
put from: 'build/app/', into: '/opt/nginx/latest/html/'
}
}
}

正如我上面所说,它将所有文件放入 /opt/nginx/latest/html/app 中。如果我将 from 更改为使用 fileTree(dir: 'build/app') 那么所有文件都会被复制,但我会丢失文件结构,即 build/app/scripts/main.js 被复制到 /opt/nginx/latest/html/main.js 而不是预期的 /opt/nginx/latest/html/脚本/main.js.

如何将一个目录(而不是目录本身)的内容复制到目标目录,同时保留文件夹结构?

最佳答案

查看插件的代码,它显示:

    static usage = '''put() accepts following signatures:
put(from: String or File, into: String) // put a file or directory
put(from: Iterable<File>, into: String) // put files or directories
put(from: InputStream, into: String) // put a stream into the remote file
put(text: String, into: String) // put a string into the remote file
put(bytes: byte[], into: String) // put a byte array into the remote file'''

您正在使用选项#1,其中您提供一个文件(也可以是一个目录),而您应该使用#2,这将是一个的可迭代列表build/app 的子级。所以我会尝试:

put (from: new File('build/app').listFiles(), into: '/opt/nginx/latest/html/')

编辑:或者,

new File('build/app').listFiles().each{put (from:it, into:'/opt/nginx/latest/html/')}

关于Gradle SSH 插件复制父文件夹而不仅仅是文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34749398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com