我想等待服务器准备好,然后在它上面运行任务
编辑: 我已经找到了一些。我正在为我的字符串正确过滤。但是,如何在后台运行它,并在grunt序列完成后终止它?
考虑
grunt common server spec-e2e
这将运行常见任务,运行grunt服务器,然后(不停止服务器)在顶部运行下一个任务。完成所有这些操作后,它会自动关闭服务器。
这就是我想要创建的那种功能。
答案 0 :(得分:0)
我学到了几个要点:
require('child_process').spawn(...)
- 将继续运行所有后续的grunt任务(一旦完成单个任务,它们就不会被关闭)。因此,grunt selendroid:selendroid.jar spec-e2e
任务启动服务器的命令selendroid
将使服务器保持运行,直到spec-e2e
任务完成。
我的selendroid
任务的代码是:
grunt.registerTask('selendroid', 'Start selendroid server', function (appLocation) {
var done = this.async();
var timeout = setTimeout(function() {
console.log('Selendroid took too long to start');
done(false);
}, 30000);
function checkLoaded(data) {
data = data.toString();
if (data.indexOf('Selendroid standalone server has been started on port') > -1) {
clearTimeout(timeout);
done();
}
}
if (typeof appLocation === 'undefined') {
console.log('App to test not set, aborting...'.red);
done(false);
}
var cmd = require('child_process').spawn('java', ['-jar', 'selendroid.jar', '-app', appLocation]);
cmd.stdout.on('data', function(data) {
checkLoaded(data);
});
cmd.stderr.on('data', function(data) {
checkLoaded(data);
});
});