mvn.plugin.zsh 14 KB

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