maven-completion.bash is a Bash completion script for the Maven Java build manager. It was inspired by the Git completion script, as well as the completion scripts that are part of the bash-completion project, though it does not (currently) depend on that project for any functionality.
Save this script somewhere and load it up in your
~/.profile or other appropriate shell startup file:
Alternatively, if you have
bash-completion installed and configured, you could drop the file system-wide completion scripts directory and it will get loaded for you automatically. I put mine in a personal directory, set up like this in my
export BASH_COMPLETION_DIR=~/.bash_completion.d if [ -f /opt/local/etc/bash_completion ]; then . /opt/local/etc/bash_completion fi
( I'm on Mac OS X, with
bash-completion installed via MacPorts. ) Again, this project does not currently depend on
bash-completion at all, but if you've already got it installed, it allows you to start using it with a minimum of fuss.
How to Use
The script is currently very basic, providing completion for all Maven lifecycle phases, as well as command-line flags (both short and long style). If you have
xsltproc installed, it will also suggest properties of your project, when defined in the POM files. Future plans include support for completing module names, and even some commonly-used plugin goals (such as the ones from the maven-help-plugin).
Just start typing a command and hit to show options for completion:
$ mvn --<TAB><TAB> --activate-profiles --define --fail-never --no-plugin-updates --resume-from --version --also-make --encrypt-master-password --file --non-recursive --settings --also-make-dependents --encrypt-password --global-settings --offline --show-version --batch-mode --errors --help --projects --strict-checksums --check-plugin-updates --fail-at-end --lax-checksums --quiet --update-plugins --debug --fail-fast --no-plugin-registry --reactor --update-snapshots $ mvn --fail-<TAB><TAB> --fail-at-end --fail-fast --fail-never $ mvn process-<TAB><TAB> process-classes process-resources process-sources process-test-classes process-test-resources process-test-sources
Just keep typing to narrow down your options. When there is only one choice left, the script will complete the rest of the word for you.