1 # Calls mvnw if found in the current project, otherwise execute the original mvn
4 while [[ ! -x "$dir/mvnw" && "$dir" != / ]]; do
8 if [[ -x "$dir/mvnw" ]]; then
9 echo "Running \`$dir/mvnw\`..." >&2
17 # Wrapper function for Maven's mvn command. Based on https://gist.github.com/1027800
19 local BOLD=$(echoti bold)
20 local TEXT_RED=$(echoti setaf 1)
21 local TEXT_GREEN=$(echoti setaf 2)
22 local TEXT_YELLOW=$(echoti setaf 3)
23 local TEXT_BLUE=$(echoti setaf 4)
24 local TEXT_WHITE=$(echoti setaf 7)
25 local RESET_FORMATTING=$(echoti sgr0)
28 # Filter mvn output using sed. Before filtering set the locale to C, so invalid characters won't break some sed implementations
30 LC_CTYPE=C mvn "$@" | sed \
31 -e "s/\(\[INFO\]\)\(.*\)/${TEXT_BLUE}${BOLD}\1${RESET_FORMATTING}\2/g" \
32 -e "s/\(\[DEBUG\]\)\(.*\)/${TEXT_WHITE}${BOLD}\1${RESET_FORMATTING}\2/g" \
33 -e "s/\(\[INFO\]\ BUILD SUCCESSFUL\)/${BOLD}${TEXT_GREEN}\1${RESET_FORMATTING}/g" \
34 -e "s/\(\[WARNING\]\)\(.*\)/${BOLD}${TEXT_YELLOW}\1${RESET_FORMATTING}\2/g" \
35 -e "s/\(\[ERROR\]\)\(.*\)/${BOLD}${TEXT_RED}\1${RESET_FORMATTING}\2/g" \
36 -e "s/Tests run: \([^,]*\), Failures: \([^,]*\), Errors: \([^,]*\), Skipped: \([^,]*\)/${BOLD}${TEXT_GREEN}Tests run: \1${RESET_FORMATTING}, Failures: ${BOLD}${TEXT_RED}\2${RESET_FORMATTING}, Errors: ${BOLD}${TEXT_RED}\3${RESET_FORMATTING}, Skipped: ${BOLD}${TEXT_YELLOW}\4${RESET_FORMATTING}/g"
38 # Make sure formatting is reset
39 echo -ne "${RESET_FORMATTING}"
43 # either use original mvn or the mvn wrapper
44 alias mvn="mvn-or-mvnw"
46 # Run mvn against the pom found in a project's root directory (assumes a git repo)
47 alias 'mvn!'='mvn -f $(git rev-parse --show-toplevel 2>/dev/null || echo ".")/pom.xml'
50 alias mvnag='mvn archetype:generate'
51 alias mvnboot='mvn spring-boot:run'
52 alias mvnc='mvn clean'
53 alias mvncd='mvn clean deploy'
54 alias mvnce='mvn clean eclipse:clean eclipse:eclipse'
55 alias mvnci='mvn clean install'
56 alias mvncie='mvn clean install eclipse:eclipse'
57 alias mvncini='mvn clean initialize'
58 alias mvncist='mvn clean install -DskipTests'
59 alias mvncisto='mvn clean install -DskipTests --offline'
60 alias mvncom='mvn compile'
61 alias mvncp='mvn clean package'
62 alias mvnct='mvn clean test'
63 alias mvncv='mvn clean verify'
64 alias mvncvst='mvn clean verify -DskipTests'
65 alias mvnd='mvn deploy'
66 alias mvndocs='mvn dependency:resolve -Dclassifier=javadoc'
67 alias mvndt='mvn dependency:tree'
68 alias mvne='mvn eclipse:eclipse'
69 alias mvnfmt='mvn fmt:format'
70 alias mvnjetty='mvn jetty:run'
71 alias mvnp='mvn package'
72 alias mvnqdev='mvn quarkus:dev'
74 alias mvnsrc='mvn dependency:sources'
76 alias mvntc='mvn tomcat:run'
77 alias mvntc7='mvn tomcat7:run'
78 alias mvn-updates='mvn versions:display-dependency-updates'
81 function listMavenCompletions {
83 local -a profiles POM_FILES modules
86 POM_FILES=(~/.m2/settings.xml)
88 # POM in the current directory
89 if [[ -f pom.xml ]]; then
91 POM_FILES+=("${file:A}")
94 # Look for POM files in parent directories
95 while [[ -n "$file" ]] && grep -q "<parent>" "$file"; do
96 # look for a new relativePath for parent pom.xml
97 new_file=$(grep -e "<relativePath>.*</relativePath>" "$file" | sed -e 's/.*<relativePath>\(.*\)<\/relativePath>.*/\1/')
99 # if <parent> is present but not defined, assume ../pom.xml
100 if [[ -z "$new_file" ]]; then
101 new_file="../pom.xml"
104 # if file doesn't exist break
105 file="${file:h}/${new_file}"
106 if ! [[ -e "$file" ]]; then
110 POM_FILES+=("${file:A}")
113 # Get profiles from found files
114 for file in $POM_FILES; do
115 [[ -e $file ]] || continue
116 profiles+=($(sed 's/<!--.*-->//' "$file" | sed '/<!--/,/-->/d' | grep -e "<profile>" -A 1 | grep -e "<id>.*</id>" | sed 's?.*<id>\(.*\)<\/id>.*?-P\1?'))
120 modules=($(print -l **/pom.xml(-.N:h) | grep -v '/target/classes/META-INF/'))
124 clean initialize process-resources compile process-test-resources test-compile test package verify install deploy site
126 # integration testing
127 pre-integration-test integration-test
130 deploy failsafe install site surefire checkstyle javadoc jxr pmd ant antrun archetype assembly dependency enforcer gpg help release repository source eclipse idea jetty cargo jboss tomcat tomcat6 tomcat7 exec versions war ear ejb android scm buildnumber nexus repository sonar license hibernate3 liquibase flyway gwt
135 failsafe:integration-test failsafe:verify
137 install:install-file install:help
139 site:site site:deploy site:run site:stage site:stage-deploy site:attach-descriptor site:jar site:effective-site
144 checkstyle:checkstyle checkstyle:check checkstyle:checkstyle-aggregate
146 javadoc:javadoc javadoc:test-javadoc javadoc:javadoc-no-fork javadoc:test-javadoc-no-fork javadoc:aggregate javadoc:test-aggregate javadoc:jar javadoc:test-jar javadoc:aggregate-jar javadoc:test-aggregate-jar javadoc:fix javadoc:test-fix javadoc:resource-bundle javadoc:test-resource-bundle
148 jxr:jxr jxr:aggregate jxr:test-jxr jxr:test-aggregate
150 pmd:pmd pmd:cpd pmd:check pmd:cpd-check
157 archetype:generate archetype:create-from-project archetype:crawl
159 assembly:single assembly:assembly
161 dependency:analyze dependency:analyze-dep-mgt dependency:analyze-only dependency:analyze-report dependency:analyze-duplicate dependency:build-classpath dependency:copy dependency:copy-dependencies dependency:display-ancestors dependency:get dependency:go-offline dependency:list dependency:list-repositories dependency:properties dependency:purge-local-repository dependency:resolve dependency:resolve-plugins dependency:sources dependency:tree dependency:unpack dependency:unpack-dependencies
163 enforcer:enforce enforcer:display-info
165 gpg:sign gpg:sign-and-deploy-file
167 help:active-profiles help:all-profiles help:describe help:effective-pom help:effective-settings help:evaluate help:expressions help:system
169 release:clean release:prepare release:prepare-with-pom release:rollback release:perform release:stage release:branch release:update-versions
171 jgitflow:feature-start jgitflow:feature-finish jgitflow:release-start jgitflow:release-finish jgitflow:hotfix-start jgitflow:hotfix-finish jgitflow:build-number
173 repository:bundle-create repository:bundle-pack
175 source:aggregate source:jar source:jar-no-fork source:test-jar source:test-jar-no-fork
178 eclipse:clean eclipse:eclipse
183 jetty:run jetty:run-exploded
185 cargo:start cargo:run cargo:stop cargo:deploy cargo:undeploy cargo:help
187 jboss:start jboss:stop jboss:deploy jboss:undeploy jboss:redeploy
189 tomcat:start tomcat:stop tomcat:deploy tomcat:undeploy tomcat:redeploy
191 tomcat6:run tomcat6:run-war tomcat6:run-war-only tomcat6:stop tomcat6:deploy tomcat6:undeploy
193 tomcat7:run tomcat7:run-war tomcat7:run-war-only tomcat7:deploy
195 tomee:run tomee:run-war tomee:run-war-only tomee:stop tomee:deploy tomee:undeploy
197 spring-boot:run spring-boot:repackage
199 quarkus:dev quarkus:list-extensions quarkus:add-extension quarkus:add-extensions quarkus:generate-config quarkus:help
203 versions:display-dependency-updates versions:display-plugin-updates versions:display-property-updates versions:update-parent versions:update-properties versions:update-child-modules versions:lock-snapshots versions:unlock-snapshots versions:resolve-ranges versions:set versions:use-releases versions:use-next-releases versions:use-latest-releases versions:use-next-snapshots versions:use-latest-snapshots versions:use-next-versions versions:use-latest-versions versions:commit versions:revert
205 scm:add scm:bootstrap scm:branch scm:changelog scm:check-local-modification scm:checkin scm:checkout scm:diff scm:edit scm:export scm:list scm:remove scm:status scm:tag scm:unedit scm:update scm:update-subprojects scm:validate
207 buildnumber:create buildnumber:create-timestamp buildnumber:help buildnumber:hgchangeset
210 war:war war:exploded war:inplace war:manifest
212 ear:ear ear:generate-application-xml
216 android:apk android:apklib android:deploy android:deploy-dependencies android:dex android:emulator-start android:emulator-stop android:emulator-stop-all android:generate-sources android:help android:instrument android:manifest-update android:pull android:push android:redeploy android:run android:undeploy android:unpack android:version-update android:zipalign android:devices
218 nexus:staging-list nexus:staging-close nexus:staging-drop nexus:staging-release nexus:staging-build-promotion nexus:staging-profiles-list nexus:settings-download
220 repository:bundle-create repository:bundle-pack repository:help
225 license:format license:check
227 hibernate3:hbm2ddl hibernate3:help
229 liquibase:changelogSync liquibase:changelogSyncSQL liquibase:clearCheckSums liquibase:dbDoc liquibase:diff liquibase:dropAll liquibase:help liquibase:migrate liquibase:listLocks liquibase:migrateSQL liquibase:releaseLocks liquibase:rollback liquibase:rollbackSQL liquibase:status liquibase:tag liquibase:update liquibase:updateSQL liquibase:updateTestingRollback
231 flyway:clean flyway:history flyway:init flyway:migrate flyway:status flyway:validate
233 gwt:browser gwt:clean gwt:compile gwt:compile-report gwt:css gwt:debug gwt:eclipse gwt:eclipseTest gwt:generateAsync gwt:help gwt:i18n gwt:mergewebxml gwt:resources gwt:run gwt:sdkInstall gwt:source-jar gwt:soyc gwt:test
235 asciidoctor:process-asciidoc asciidoctor:auto-refresh asciidoctor:http asciidoctor:zip
237 compiler:compile compiler:testCompile
239 resources:resources resources:testResources resources:copy-resources
251 changelog:changelog changelog:dev-activity changelog:file-activity
253 changes:announcement-mail changes:announcement-generate changes:changes-check changes:changes-validate changes:changes-report changes:jira-report changes:trac-report changes:github-report
259 jdeps:jdkinternals jdeps:test-jdkinternals
262 # project-info-reports
263 project-info-reports:cim project-info-reports:dependencies project-info-reports:dependency-convergence project-info-reports:dependency-info project-info-reports:dependency-management project-info-reports:distribution-management project-info-reports:help project-info-reports:index project-info-reports:issue-tracking project-info-reports:license project-info-reports:mailing-list project-info-reports:modules project-info-reports:plugin-management project-info-reports:plugins project-info-reports:project-team project-info-reports:scm project-info-reports:summary
265 surefire-report:failsafe-report-only surefire-report:report surefire-report:report-only
267 invoker:install invoker:integration-test invoker:verify invoker:run
269 jarsigner:sign jarsigner:verify
275 plugin:descriptor plugin:report plugin:updateRegistry plugin:addPluginArtifactMetadata plugin:helpmojo
277 remote-resources:bundle remote-resources:process
279 scm-publish:help scm-publish:publish-scm scm-publish:scmpublish
285 liberty:clean-server liberty:compile-jsp liberty:configure-arquillian liberty:create-server liberty:debug liberty:debug-server liberty:deploy liberty:dev liberty:display-url liberty:dump-server liberty:install-apps liberty:install-feature liberty:install-server liberty:java-dump-server liberty:package-server liberty:run liberty:run-server liberty:server-status liberty:start liberty:start-server liberty:status liberty:stop liberty:stop-server liberty:test-start-server liberty:test-stop-server liberty:undeploy liberty:uninstall-feature
288 "-Dmaven.test.skip=true" -DskipTests -DskipITs -Dmaven.surefire.debug -DenableCiProfile "-Dpmd.skip=true" "-Dcheckstyle.skip=true" "-Dtycho.mode=maven" "-Dmaven.test.failure.ignore=true" "-DgroupId=" "-DartifactId=" "-Dversion=" "-Dpackaging=jar" "-Dfile="
292 -amd --also-make-dependents-am
295 -C --strict-checksums
297 -cpu --check-plugin-updates
300 -emp --encrypt-master-password
301 -ep --encrypt-password
306 -gs --global-settings
307 -gt --global-toolchains
310 -llr --legacy-local-repository
312 -npr --no-plugin-registry
313 -npu --no-plugin-updates
314 -nsu --no-snapshot-updates
316 -P --activate-profiles
323 -U --update-snapshots
329 cli:execute cli:execute-phase
330 archetype:generate generate-sources
332 -Dtest=$(if [ -d ./src/test/java ] ; then find ./src/test/java -type f -name '*.java' | grep -v svn | sed 's?.*/\([^/]*\)\..*?-Dtest=\1?' ; fi)
333 -Dit.test=$(if [ -d ./src/test/java ] ; then find ./src/test/java -type f -name '*.java' | grep -v svn | sed 's?.*/\([^/]*\)\..*?-Dit.test=\1?' ; fi)
340 compctl -K listMavenCompletions mvn mvnw
341 compctl -K listMavenCompletions mvn-color
342 compctl -K listMavenCompletions mvn-or-mvnw