Based on a blog post by John Hitchings on the WealthFront Engineering web site, I started looking into bash completion.

As a Java developer, I use Maven from the command-line quite a bit, so I decided to add bash completion for the ‘mvn’ command.

The following script works great on OS X, and should work in bash on other systems as well.

Happy completion!

:::bash
_mvn() 
{
    local cur prev opts
    COMPREPLY=()
    cur='${COMP_WORDS[COMP_CWORD]}'
    prev='${COMP_WORDS[COMP_CWORD-1]}'
    opts='clean compile package install'

    if [[ ${cur} == * ]] ; then
        COMPREPLY=( $(compgen -W "${opts}"  ${cur}) )
        return 0
    fi
}
complete -F _mvn mvn