2017-10-19 22 views
2

J'ai besoin d'exécuter un script SQL sur une base de données distante dans Gradle (Version 4.2.1). Donc j'ai essayé avec la tâche Exec. La tâche fonctionne, lorsque la base de données est sur ma machine locale. Avec un hôte distant, la tâche ne démarre pas.Gradle Exec Tâche ne démarrant pas avec psql sur l'hôte distant

Ce sont les tâches (la première fonctionne parfaitement).

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 
} 

La sortie de ligne de commande (j'annulé après quelques minutes):

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

sur cmd (sans Gradle) les œuvres de commande.

+0

'Essayez commandLine 'cmd', '/ c', 'psql', '-h', 'my.remote.host', '-f', 'myscript.sql' ou 'commandLine 'cmd/c psql -h mon.remote.host -f myscript.sql'.split (' ')' –

+0

J'ai déjà essayé, malheureusement avec le même résultat négatif. – deve

+0

Pouvez-vous exécuter la commande à partir de la ligne de commande sans gradle? –

Répondre

1

Mon Password File Configuration était erroné dans le script. Pour résoudre ce problème une variable d'environnement peut être défini:

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

Vous pouvez accepter votre propre réponse pour marquer cette question comme résolue. – Henry