mvn.plugin.zsh 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  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. #realpath replacement for iOS - not always present
  66. function _realpath {
  67. if [[ -f "$1" ]]
  68. then
  69. # file *must* exist
  70. if cd "$(echo "${1%/*}")" &>/dev/null
  71. then
  72. # file *may* not be local
  73. # exception is ./file.ext
  74. # try 'cd .; cd -;' *works!*
  75. local tmppwd="$PWD"
  76. cd - &>/dev/null
  77. else
  78. # file *must* be local
  79. local tmppwd="$PWD"
  80. fi
  81. else
  82. # file *cannot* exist
  83. return 1 # failure
  84. fi
  85. # reassemble realpath
  86. echo "$tmppwd"/"${1##*/}"
  87. return 1 #success
  88. }
  89. function __pom_hierarchy {
  90. local file=`_realpath "pom.xml"`
  91. POM_HIERARCHY+=("~/.m2/settings.xml")
  92. POM_HIERARCHY+=("$file")
  93. while [ -n "$file" ] && grep -q "<parent>" $file; do
  94. ##look for a new relativePath for parent pom.xml
  95. local new_file=`grep -e "<relativePath>.*</relativePath>" $file | sed 's/.*<relativePath>//' | sed 's/<\/relativePath>.*//g'`
  96. ## <parent> is present but not defined. Asume ../pom.xml
  97. if [ -z "$new_file" ]; then
  98. new_file="../pom.xml"
  99. fi
  100. ## if file exists continue else break
  101. new_pom=`_realpath "${file%/*}/$new_file"`
  102. if [ -n "$new_pom" ]; then
  103. file=$new_pom
  104. else
  105. break
  106. fi
  107. POM_HIERARCHY+=("$file")
  108. done
  109. }
  110. function listMavenCompletions {
  111. POM_HIERARCHY=()
  112. __pom_hierarchy
  113. profiles=()
  114. #current pom profiles
  115. for item in ${POM_HIERARCHY[*]}; do
  116. profiles=($profiles `[ -e $item ] && cat $item | sed 's/<!--.*-->//' | sed '/<!--/,/-->/d' | grep -e "<profile>" -A 1 | grep -e "<id>.*</id>" | sed 's?.*<id>\(.*\)<\/id>.*?-P\1?'`)
  117. done
  118. reply=(
  119. # common lifecycle
  120. clean initialize process-resources compile process-test-resources test-compile test package verify install deploy site
  121. # integration testing
  122. pre-integration-test integration-test
  123. # common plugins
  124. 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
  125. # deploy
  126. deploy:deploy-file
  127. # failsafe
  128. failsafe:integration-test failsafe:verify
  129. # install
  130. install:install-file install:help
  131. # site
  132. site:site site:deploy site:run site:stage site:stage-deploy site:attach-descriptor site:jar site:effective-site
  133. # surefire
  134. surefire:test
  135. # checkstyle
  136. checkstyle:checkstyle checkstyle:check checkstyle:checkstyle-aggregate
  137. # javadoc
  138. 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
  139. # jxr
  140. jxr:jxr jxr:aggregate jxr:test-jxr jxr:test-aggregate
  141. # pmd
  142. pmd:pmd pmd:cpd pmd:check pmd:cpd-check
  143. # ant
  144. ant:ant ant:clean
  145. # antrun
  146. antrun:run
  147. # archetype
  148. archetype:generate archetype:create-from-project archetype:crawl
  149. # assembly
  150. assembly:single assembly:assembly
  151. # dependency
  152. 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
  153. # enforcer
  154. enforcer:enforce enforcer:display-info
  155. # gpg
  156. gpg:sign gpg:sign-and-deploy-file
  157. # help
  158. help:active-profiles help:all-profiles help:describe help:effective-pom help:effective-settings help:evaluate help:expressions help:system
  159. # release
  160. release:clean release:prepare release:prepare-with-pom release:rollback release:perform release:stage release:branch release:update-versions
  161. # jgitflow
  162. jgitflow:feature-start jgitflow:feature-finish jgitflow:release-start jgitflow:release-finish jgitflow:hotfix-start jgitflow:hotfix-finish jgitflow:build-number
  163. # repository
  164. repository:bundle-create repository:bundle-pack
  165. # source
  166. source:aggregate source:jar source:jar-no-fork source:test-jar source:test-jar-no-fork
  167. # eclipse
  168. eclipse:clean eclipse:eclipse
  169. # idea
  170. idea:clean idea:idea
  171. # jetty
  172. jetty:run jetty:run-exploded
  173. # cargo
  174. cargo:start cargo:run cargo:stop cargo:deploy cargo:undeploy cargo:help
  175. # jboss
  176. jboss:start jboss:stop jboss:deploy jboss:undeploy jboss:redeploy
  177. # tomcat
  178. tomcat:start tomcat:stop tomcat:deploy tomcat:undeploy tomcat:redeploy
  179. # tomcat6
  180. tomcat6:run tomcat6:run-war tomcat6:run-war-only tomcat6:stop tomcat6:deploy tomcat6:undeploy
  181. # tomcat7
  182. tomcat7:run tomcat7:run-war tomcat7:run-war-only tomcat7:deploy
  183. # tomee
  184. tomee:run tomee:run-war tomee:run-war-only tomee:stop tomee:deploy tomee:undeploy
  185. # spring-boot
  186. spring-boot:run spring-boot:repackage
  187. # exec
  188. exec:exec exec:java
  189. # versions
  190. 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
  191. # scm
  192. 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
  193. # buildnumber
  194. buildnumber:create buildnumber:create-timestamp buildnumber:help buildnumber:hgchangeset
  195. # war
  196. war:war war:exploded war:inplace war:manifest
  197. # ear
  198. ear:ear ear:generate-application-xml
  199. # ejb
  200. ejb:ejb
  201. # android
  202. 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
  203. # nexus
  204. nexus:staging-list nexus:staging-close nexus:staging-drop nexus:staging-release nexus:staging-build-promotion nexus:staging-profiles-list nexus:settings-download
  205. # repository
  206. repository:bundle-create repository:bundle-pack repository:help
  207. # sonar
  208. sonar:sonar
  209. # license
  210. license:format license:check
  211. # hibernate3
  212. hibernate3:hbm2ddl hibernate3:help
  213. # liquibase
  214. 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
  215. # flyway
  216. flyway:clean flyway:history flyway:init flyway:migrate flyway:status flyway:validate
  217. # gwt
  218. 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
  219. # asciidoctor
  220. asciidoctor:process-asciidoc asciidoctor:auto-refresh asciidoctor:http asciidoctor:zip
  221. # compiler
  222. compiler:compile compiler:testCompile
  223. # resources
  224. resources:resources resources:testResources resources:copy-resources
  225. # verifier
  226. verifier:verify
  227. # jar
  228. jar:jar jar:test-jar
  229. # rar
  230. rar:rar
  231. # acr
  232. acr:acr
  233. # shade
  234. shade:shade
  235. # changelog
  236. changelog:changelog changelog:dev-activity changelog:file-activity
  237. # changes
  238. changes:announcement-mail changes:announcement-generate changes:changes-check changes:changes-validate changes:changes-report changes:jira-report changes:trac-report changes:github-report
  239. # doap
  240. doap:generate
  241. # docck
  242. docck:check
  243. # jdeps
  244. jdeps:jdkinternals jdeps:test-jdkinternals
  245. # linkcheck
  246. linkcheck:linkcheck
  247. # project-info-reports
  248. 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
  249. # surefire-report
  250. surefire-report:failsafe-report-only surefire-report:report surefire-report:report-only
  251. # invoker
  252. invoker:install invoker:integration-test invoker:verify invoker:run
  253. # jarsigner
  254. jarsigner:sign jarsigner:verify
  255. # patch
  256. patch:apply
  257. # pdf
  258. pdf:pdf
  259. # plugin
  260. plugin:descriptor plugin:report plugin:updateRegistry plugin:addPluginArtifactMetadata plugin:helpmojo
  261. # remote-resources
  262. remote-resources:bundle remote-resources:process
  263. # scm-publish
  264. scm-publish:help scm-publish:publish-scm scm-publish:scmpublish
  265. # stage
  266. stage:copy
  267. # toolchain
  268. toolchain:toolchain
  269. # options
  270. "-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="
  271. # arguments
  272. -am --also-make
  273. -amd --also-make-dependents-am
  274. -B --batch-mode
  275. -b --builder
  276. -C --strict-checksums
  277. -c --lax-checksums
  278. -cpu --check-plugin-updates
  279. -D --define
  280. -e --errors
  281. -emp --encrypt-master-password
  282. -ep --encrypt-password
  283. -f --file
  284. -fae --fail-at-end
  285. -ff --fail-fast
  286. -fn --fail-never
  287. -gs --global-settings
  288. -gt --global-toolchains
  289. -h --help
  290. -l --log-file
  291. -llr --legacy-local-repository
  292. -N --non-recursive
  293. -npr --no-plugin-registry
  294. -npu --no-plugin-updates
  295. -nsu --no-snapshot-updates
  296. -o --offline
  297. -P --activate-profiles
  298. -pl --projects
  299. -q --quiet
  300. -rf --resume-from
  301. -s --settings
  302. -t --toolchains
  303. -T --threads
  304. -U --update-snapshots
  305. -up --update-plugins
  306. -v --version
  307. -V --show-version
  308. -X --debug
  309. cli:execute cli:execute-phase
  310. archetype:generate generate-sources
  311. cobertura:cobertura
  312. -Dtest=$(if [ -d ./src/test/java ] ; then find ./src/test/java -type f -name '*.java' | grep -v svn | sed 's?.*/\([^/]*\)\..*?-Dtest=\1?' ; fi)
  313. -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)
  314. $profiles
  315. )
  316. unset POM_HIERARCHY
  317. unset profiles
  318. }
  319. compctl -K listMavenCompletions mvn mvnw
  320. compctl -K listMavenCompletions mvn-color
  321. compctl -K listMavenCompletions mvn-or-mvnw