mvn.plugin.zsh 14 KB

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