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