mvn.plugin.zsh 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. # Calls ./mvnw if found, otherwise execute the original mvn
  2. mvn-or-mvnw() {
  3. if [ -x ./mvnw ]; then
  4. echo "executing mvnw instead of mvn"
  5. ./mvnw "$@"
  6. else
  7. command mvn "$@"
  8. fi
  9. }
  10. # Wrapper function for Maven's mvn command. Based on https://gist.github.com/1027800
  11. mvn-color() {
  12. local BOLD=$(echoti bold)
  13. local TEXT_RED=$(echoti setaf 1)
  14. local TEXT_GREEN=$(echoti setaf 2)
  15. local TEXT_YELLOW=$(echoti setaf 3)
  16. local TEXT_BLUE=$(echoti setaf 4)
  17. local TEXT_WHITE=$(echoti setaf 7)
  18. local RESET_FORMATTING=$(echoti sgr0)
  19. (
  20. # Filter mvn output using sed. Before filtering set the locale to C, so invalid characters won't break some sed implementations
  21. unset LANG
  22. LC_CTYPE=C mvn "$@" | sed \
  23. -e "s/\(\[INFO\]\)\(.*\)/${TEXT_BLUE}${BOLD}\1${RESET_FORMATTING}\2/g" \
  24. -e "s/\(\[DEBUG\]\)\(.*\)/${TEXT_WHITE}${BOLD}\1${RESET_FORMATTING}\2/g" \
  25. -e "s/\(\[INFO\]\ BUILD SUCCESSFUL\)/${BOLD}${TEXT_GREEN}\1${RESET_FORMATTING}/g" \
  26. -e "s/\(\[WARNING\]\)\(.*\)/${BOLD}${TEXT_YELLOW}\1${RESET_FORMATTING}\2/g" \
  27. -e "s/\(\[ERROR\]\)\(.*\)/${BOLD}${TEXT_RED}\1${RESET_FORMATTING}\2/g" \
  28. -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"
  29. # Make sure formatting is reset
  30. echo -ne "${RESET_FORMATTING}"
  31. )
  32. }
  33. # either use orignal mvn or the mvn wrapper
  34. alias mvn="mvn-or-mvnw"
  35. # Run mvn against the pom found in a project's root directory (assumes a git repo)
  36. alias 'mvn!'='mvn -f $(git rev-parse --show-toplevel 2>/dev/null || echo ".")/pom.xml'
  37. # aliases
  38. alias mvnag='mvn archetype:generate'
  39. alias mvnboot='mvn spring-boot:run'
  40. alias mvnc='mvn clean'
  41. alias mvncd='mvn clean deploy'
  42. alias mvnce='mvn clean eclipse:clean eclipse:eclipse'
  43. alias mvnci='mvn clean install'
  44. alias mvncie='mvn clean install eclipse:eclipse'
  45. alias mvncini='mvn clean initialize'
  46. alias mvncist='mvn clean install -DskipTests'
  47. alias mvncisto='mvn clean install -DskipTests --offline'
  48. alias mvncom='mvn compile'
  49. alias mvncp='mvn clean package'
  50. alias mvnct='mvn clean test'
  51. alias mvncv='mvn clean verify'
  52. alias mvncvst='mvn clean verify -DskipTests'
  53. alias mvnd='mvn deploy'
  54. alias mvndocs='mvn dependency:resolve -Dclassifier=javadoc'
  55. alias mvndt='mvn dependency:tree'
  56. alias mvne='mvn eclipse:eclipse'
  57. alias mvnjetty='mvn jetty:run'
  58. alias mvnp='mvn package'
  59. alias mvns='mvn site'
  60. alias mvnsrc='mvn dependency:sources'
  61. alias mvnt='mvn test'
  62. alias mvntc='mvn tomcat:run'
  63. alias mvntc7='mvn tomcat7:run'
  64. alias mvn-updates='mvn versions:display-dependency-updates'
  65. function listMavenCompletions {
  66. reply=(
  67. # common lifecycle
  68. clean initialize process-resources compile process-test-resources test-compile test package verify install deploy site
  69. # integration testing
  70. pre-integration-test integration-test
  71. # common plugins
  72. 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
  73. # deploy
  74. deploy:deploy-file
  75. # failsafe
  76. failsafe:integration-test failsafe:verify
  77. # install
  78. install:install-file install:help
  79. # site
  80. site:site site:deploy site:run site:stage site:stage-deploy site:attach-descriptor site:jar site:effective-site
  81. # surefire
  82. surefire:test
  83. # checkstyle
  84. checkstyle:checkstyle checkstyle:check checkstyle:checkstyle-aggregate
  85. # javadoc
  86. 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
  87. # jxr
  88. jxr:jxr jxr:aggregate jxr:test-jxr jxr:test-aggregate
  89. # pmd
  90. pmd:pmd pmd:cpd pmd:check pmd:cpd-check
  91. # ant
  92. ant:ant ant:clean
  93. # antrun
  94. antrun:run
  95. # archetype
  96. archetype:generate archetype:create-from-project archetype:crawl
  97. # assembly
  98. assembly:single assembly:assembly
  99. # dependency
  100. 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
  101. # enforcer
  102. enforcer:enforce enforcer:display-info
  103. # gpg
  104. gpg:sign gpg:sign-and-deploy-file
  105. # help
  106. help:active-profiles help:all-profiles help:describe help:effective-pom help:effective-settings help:evaluate help:expressions help:system
  107. # release
  108. release:clean release:prepare release:prepare-with-pom release:rollback release:perform release:stage release:branch release:update-versions
  109. # jgitflow
  110. jgitflow:feature-start jgitflow:feature-finish jgitflow:release-start jgitflow:release-finish jgitflow:hotfix-start jgitflow:hotfix-finish jgitflow:build-number
  111. # repository
  112. repository:bundle-create repository:bundle-pack
  113. # source
  114. source:aggregate source:jar source:jar-no-fork source:test-jar source:test-jar-no-fork
  115. # eclipse
  116. eclipse:clean eclipse:eclipse
  117. # idea
  118. idea:clean idea:idea
  119. # jetty
  120. jetty:run jetty:run-exploded
  121. # cargo
  122. cargo:start cargo:run cargo:stop cargo:deploy cargo:undeploy cargo:help
  123. # jboss
  124. jboss:start jboss:stop jboss:deploy jboss:undeploy jboss:redeploy
  125. # tomcat
  126. tomcat:start tomcat:stop tomcat:deploy tomcat:undeploy tomcat:redeploy
  127. # tomcat6
  128. tomcat6:run tomcat6:run-war tomcat6:run-war-only tomcat6:stop tomcat6:deploy tomcat6:undeploy
  129. # tomcat7
  130. tomcat7:run tomcat7:run-war tomcat7:run-war-only tomcat7:deploy
  131. # tomee
  132. tomee:run tomee:run-war tomee:run-war-only tomee:stop tomee:deploy tomee:undeploy
  133. # spring-boot
  134. spring-boot:run spring-boot:repackage
  135. # exec
  136. exec:exec exec:java
  137. # versions
  138. 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
  139. # scm
  140. 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
  141. # buildnumber
  142. buildnumber:create buildnumber:create-timestamp buildnumber:help buildnumber:hgchangeset
  143. # war
  144. war:war war:exploded war:inplace war:manifest
  145. # ear
  146. ear:ear ear:generate-application-xml
  147. # ejb
  148. ejb:ejb
  149. # android
  150. 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
  151. # nexus
  152. nexus:staging-list nexus:staging-close nexus:staging-drop nexus:staging-release nexus:staging-build-promotion nexus:staging-profiles-list nexus:settings-download
  153. # repository
  154. repository:bundle-create repository:bundle-pack repository:help
  155. # sonar
  156. sonar:sonar
  157. # license
  158. license:format license:check
  159. # hibernate3
  160. hibernate3:hbm2ddl hibernate3:help
  161. # liquibase
  162. 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
  163. # flyway
  164. flyway:clean flyway:history flyway:init flyway:migrate flyway:status flyway:validate
  165. # gwt
  166. 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
  167. # asciidoctor
  168. asciidoctor:process-asciidoc asciidoctor:auto-refresh asciidoctor:http asciidoctor:zip
  169. # compiler
  170. compiler:compile compiler:testCompile
  171. # resources
  172. resources:resources resources:testResources resources:copy-resources
  173. # verifier
  174. verifier:verify
  175. # jar
  176. jar:jar jar:test-jar
  177. # rar
  178. rar:rar
  179. # acr
  180. acr:acr
  181. # shade
  182. shade:shade
  183. # changelog
  184. changelog:changelog changelog:dev-activity changelog:file-activity
  185. # changes
  186. changes:announcement-mail changes:announcement-generate changes:changes-check changes:changes-validate changes:changes-report changes:jira-report changes:trac-report changes:github-report
  187. # doap
  188. doap:generate
  189. # docck
  190. docck:check
  191. # jdeps
  192. jdeps:jdkinternals jdeps:test-jdkinternals
  193. # linkcheck
  194. linkcheck:linkcheck
  195. # project-info-reports
  196. 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
  197. # surefire-report
  198. surefire-report:failsafe-report-only surefire-report:report surefire-report:report-only
  199. # invoker
  200. invoker:install invoker:integration-test invoker:verify invoker:run
  201. # jarsigner
  202. jarsigner:sign jarsigner:verify
  203. # patch
  204. patch:apply
  205. # pdf
  206. pdf:pdf
  207. # plugin
  208. plugin:descriptor plugin:report plugin:updateRegistry plugin:addPluginArtifactMetadata plugin:helpmojo
  209. # remote-resources
  210. remote-resources:bundle remote-resources:process
  211. # scm-publish
  212. scm-publish:help scm-publish:publish-scm scm-publish:scmpublish
  213. # stage
  214. stage:copy
  215. # toolchain
  216. toolchain:toolchain
  217. # options
  218. "-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="
  219. # arguments
  220. -am --also-make
  221. -amd --also-make-dependents-am
  222. -B --batch-mode
  223. -b --builder
  224. -C --strict-checksums
  225. -c --lax-checksums
  226. -cpu --check-plugin-updates
  227. -D --define
  228. -e --errors
  229. -emp --encrypt-master-password
  230. -ep --encrypt-password
  231. -f --file
  232. -fae --fail-at-end
  233. -ff --fail-fast
  234. -fn --fail-never
  235. -gs --global-settings
  236. -gt --global-toolchains
  237. -h --help
  238. -l --log-file
  239. -llr --legacy-local-repository
  240. -N --non-recursive
  241. -npr --no-plugin-registry
  242. -npu --no-plugin-updates
  243. -nsu --no-snapshot-updates
  244. -o --offline
  245. -P --activate-profiles
  246. -pl --projects
  247. -q --quiet
  248. -rf --resume-from
  249. -s --settings
  250. -t --toolchains
  251. -T --threads
  252. -U --update-snapshots
  253. -up --update-plugins
  254. -v --version
  255. -V --show-version
  256. -X --debug
  257. cli:execute cli:execute-phase
  258. archetype:generate generate-sources
  259. cobertura:cobertura
  260. -Dtest=$(if [ -d ./src/test/java ] ; then find ./src/test/java -type f -name '*.java' | grep -v svn | sed 's?.*/\([^/]*\)\..*?-Dtest=\1?' ; fi)
  261. -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)
  262. )
  263. }
  264. compctl -K listMavenCompletions mvn mvnw
  265. compctl -K listMavenCompletions mvn-color
  266. compctl -K listMavenCompletions mvn-or-mvnw