As I needed to run the bower installation before my tests run in the CI (I use Travis-CI), I had to implement a custom task in Grunt to do so; the issues I had with the grunt tasks I found out there was that they didn't do the simplest thing: run the install command. This is an easy thing and it doesn't require any plugin. It's very important the event 'end' and the async method. The task won't finish successfully without it. You can see the complete gruntfile here
/*global require */
module.exports = function(grunt) {
// ...