mvn.plugin.zsh 12 KB

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