diff options
author | fenuks <fenuks@protonmail.com> | 2019-12-09 23:38:53 +0100 |
---|---|---|
committer | fenuks <fenuks> | 2020-09-30 00:11:57 +0200 |
commit | 7186b0437f0b2d1726d594c04e580f26746368fc (patch) | |
tree | cbbdb78552d752cbcb96b39c72409e2873e32243 /autoload | |
parent | 96dcbd1f2069843acdc57646074b3d9f0e768044 (diff) | |
download | ale-7186b0437f0b2d1726d594c04e580f26746368fc.zip |
Add maven helper file; use maven wrapper if available instead of global 'mvn' executable
Diffstat (limited to 'autoload')
-rw-r--r-- | autoload/ale/maven.vim | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/autoload/ale/maven.vim b/autoload/ale/maven.vim new file mode 100644 index 00000000..745f8c93 --- /dev/null +++ b/autoload/ale/maven.vim @@ -0,0 +1,51 @@ +" Description: Functions for working with Maven projects. +" +" Given a buffer number, find a Maven project root. +function! ale#maven#FindProjectRoot(buffer) abort + let l:wrapper_path = ale#path#FindNearestFile(a:buffer, 'mvnw') + + if !empty(l:wrapper_path) + return fnamemodify(l:wrapper_path, ':h') + endif + + let l:pom_path = ale#path#FindNearestFile(a:buffer, 'pom.xml') + + if !empty(l:pom_path) + return fnamemodify(l:pom_path, ':h') + endif + + return '' +endfunction + + +" Given a buffer number, find the path to the executable. +" First search on the path for 'mvnw' (mvnw.cmd on Windows), if nothing is found, +" try the global command. Returns an empty string if cannot find the executable. +function! ale#maven#FindExecutable(buffer) abort + let l:wrapper_cmd = has('unix') ? 'mvnw' : 'mvnw.cmd' + let l:wrapper_path = ale#path#FindNearestFile(a:buffer, l:wrapper_cmd) + + if executable(l:wrapper_path) + return l:wrapper_path + endif + + if executable('mvn') + return 'mvn' + endif + + return '' +endfunction + +" Given a buffer number, build a command to print the classpath of the root +" project. Returns an empty string if cannot build the command. +function! ale#maven#BuildClasspathCommand(buffer) abort + let l:executable = ale#maven#FindExecutable(a:buffer) + let l:project_root = ale#maven#FindProjectRoot(a:buffer) + + if !empty(l:executable) && !empty(l:project_root) + return ale#path#CdString(l:project_root) + \ . l:executable . ' dependency:build-classpath' + endif + + return '' +endfunction |