Windows上的Gradle执行命令

时间:2019-05-28 14:06:40

标签: gradle

我尝试创建Gradle任务以在开发机器上删除并创建数据库。

命令如下:

"c:\Program Files\MariaDB 10.3\bin\mysqladmin.exe" --user=dbuser --password=dbpass --force drop mydb

"c:\Program Files\MariaDB 10.3\bin\mysqladmin.exe" --user=dbuser --password=dbpass --force create mydb

我的gradle任务是这些:

task dropDB {
    exec {
        commandLine 'cmd', '/c', '"c:\\Program Files\\MariaDB 10.3\\bin\\mysqladmin.exe" --user=dbuser --password=dbpass --force drop mydb'
        ignoreExitValue = true
    }
}

task createDB {
    exec {
        commandLine 'cmd', '/c', '"c:\\Program Files\\MariaDB 10.3\\bin\\mysqladmin.exe" --user=dbuser --password=dbpass --force create mydb'
        ignoreExitValue = true
    }
}

我的问题是,即使我仅执行一个任务,似乎两个任务都已执行。 执行createDB的输出:

15:58:58: Executing task 'createDB'...

> Configure project :
Database "mydb" dropped

> Task :createDB UP-TO-DATE

BUILD SUCCESSFUL in 0s
15:58:59: Task execution finished 'createDB'.

请注意,在createDB任务中,输出包含已删除。而且,如果我调用dropDB任务,它会报告已删除数据库,但是我仍然可以访问它。

我在Windows 10 Home 64bit上使用Gradle 5.4.1。

1 个答案:

答案 0 :(得分:0)

感谢M.Ricciuti的有效解决方案是这样的:

task createDB(type:Exec) {
    commandLine 'cmd', '/c', '"c:\\Program Files\\MariaDB 10.3\\bin\\mysqladmin.exe" --user=dbuser --password=dbpass --force create mydb'
    ignoreExitValue = true
}