如何在gradle项目中使用build.gradle的任务启动PostgreSQL

时间:2015-12-07 03:44:02

标签: bash postgresql shell gradle build.gradle

我正在使用gradle构建来使用以下任务在Windows和Linux上启动和停止PostgreSQL:

task startdb(type: Exec) {
    workingDir 'scripts'
    if (System.getProperty('os.name').toLowerCase().contains('windows')) {
        commandLine 'cmd', '/c', 'startdb.cmd'
    } else {
        commandLine './startdb.sh'
    }
} 

我的startdb.cmd内容:

call init.cmd
pg_ctl start -l ../log/startdblog

我的startdb.sh内容:

#!/bin/bash
source init.sh
pg_ctl status

    if [ "$?" -gt "0" ]; then
      echo "Starting Database......."

      pg_ctl start -l ../log/startdblog

    else
      echo "Database Already Running"
    fi 

但是当我在Windows数据库上执行此任务时启动但命令窗口挂起,而它在Linux上正常工作。 有些人建议使用ProcessBuilder但是当我使用ProcessBuilder时 如下:

task startmydb {
    if (System.getProperty('os.name').toLowerCase().contains('windows')) {
        ProcessBuilder pb = new ProcessBuilder(['cmd', '/c', 'startdb.cmd']);
        pb.directory(new File('scripts'));
        Process proc = pb.start();
        proc.waitFor();
        proc.exitValue()
    } 
}

它在Windows上工作正常,但我无法在Linux上使用它。

所以我被困在这里,如何使用上面的任何一个可以在Linux和Windows上工作?

0 个答案:

没有答案