Gradle Exec远程主机上不以psql开头的任务

问题描述:

我需要在Gradle(版本4.2.1)中的远程数据库上执行SQL脚本。所以我尝试了Exec任务。当数据库位于本地机器上时,该任务可以工作。对于远程主机,任务不会启动。Gradle Exec远程主机上不以psql开头的任务

这些是任务(第一个完美)。

task psqlLocalExec(type: Exec) { 
    commandLine 'cmd', '/c', 'psql -f myscript.sql' 
} 

task psqlRemoteExec(type: Exec) { 
    commandLine 'cmd', '/c', 'psql -h my.remote.host -f myscript.sql' // not working 
} 

命令行输出(I取消了它的一些分钟后):

C:\myproject>gradlew :proj:psqlRemoteExec --stacktrace 
<-------------> 0% EXECUTING [3m 43s] 
> :proj:psqlRemoteExec 

在CMD(不含摇篮)命令的工作。

+0

尝试'COMMANDLINE 'CMD', '/ C', 'PSQL', '-h', 'my.remote.host', '-f', 'myscript.sql'或'commandLine'cmd/c psql -h my.remote.host -f myscript.sql'.split('')' –

+0

我已经尝试过了,不幸的是它有相同的负面结果。 – deve

+0

你可以在没有gradle的情况下从命令行运行命令吗? –

我的Password File Configuration在脚本中是错误的。为了解决这个问题的环境变量可以设置:

task psqlRemoteExec(type: Exec) { 
    environment 'PGPASSFILE', 'path/to/pgpass.conf' 
    commandLine 'cmd', '/c', 'psql -h my.remote.host -f myscript.sql' 
} 
+0

你可以接受你自己的答案,将这个问题标记为已解决。 – Henry