java: improve maven and gradle support (also for groovy)

Add new packages `mvn` and `maven-test-mode`.
Move `gradle-mode` configuration from groovy layer to java layer
New prefix commands `SPC m m` for maven and `SPC m l` for gradle.
Make maven and gradle commands available in java-mode.
Update documentation.
This commit is contained in:
syl20bnr 2017-12-17 18:39:55 -05:00
parent a8340a0262
commit 17fc89f9e7
6 changed files with 107 additions and 72 deletions

View file

@ -7,7 +7,6 @@
- [[#features][Features:]]
- [[#install][Install]]
- [[#key-bindings][Key bindings]]
- [[#gradle][Gradle]]
- [[#repl][REPL]]
* Description
@ -24,17 +23,6 @@ add =groovy= to the existing =dotspacemacs-configuration-layers= list in this
file.
* Key bindings
** Gradle
| Key Binding | Description |
|-------------+--------------------------|
| ~SPC m c c~ | Compile |
| ~SPC m c r~ | Clean and compile |
| ~SPC m c t~ | Execute a Gradle task |
| ~SPC m t a~ | Run all tests |
| ~SPC m t b~ | Run current buffer tests |
| ~SPC m t t~ | Run a specific test |
** REPL
| Key Binding | Description |

View file

@ -10,19 +10,6 @@
;;; License: GPLv3
;; Gradle
(when (configuration-layer/package-used-p 'gradle-mode)
(defun spacemacs/gradle-clean-build ()
"Execute 'gradle clean build' command."
(interactive)
(gradle-execute "clean build"))
(defun spacemacs/gradle-test-buffer ()
"Execute 'gradle test' command against current buffer tests."
(interactive)
(gradle-single-test (file-name-base (buffer-file-name)))))
;; REPL
(defun spacemacs/groovy-send-region-switch (start end)

View file

@ -12,7 +12,6 @@
(setq groovy-packages
'(
company
gradle-mode
groovy-imports
groovy-mode
org
@ -21,19 +20,6 @@
(defun groovy/post-init-company ()
(spacemacs|add-company-backends :modes groovy-mode))
(defun groovy/init-gradle-mode ()
(use-package gradle-mode
:defer t
:config
(progn
(spacemacs/set-leader-keys-for-minor-mode 'gradle-mode
"cc" 'gradle-build
"cr" 'spacemacs/gradle-clean-build
"ct" 'gradle-execute
"ta" 'gradle-test
"tb" 'spacemacs/gradle-test-buffer
"tt" 'gradle-single-test))))
(defun groovy/init-groovy-imports ()
(use-package groovy-imports
:defer t))
@ -44,10 +30,6 @@
:init
(progn
(spacemacs/declare-prefix-for-mode 'groovy-mode "ms" "REPL")
(when (configuration-layer/package-used-p 'gradle-mode)
(add-hook 'groovy-mode-hook 'gradle-mode)
(spacemacs/declare-prefix-for-mode 'groovy-mode "mc" "build")
(spacemacs/declare-prefix-for-mode 'groovy-mode "mt" "test"))
(spacemacs/set-leader-keys-for-major-mode 'groovy-mode
"'" 'run-groovy
"sB" 'spacemacs/groovy-load-file-switch

View file

@ -36,7 +36,6 @@
- [[#ant][Ant]]
- [[#project-management][Project management]]
- [[#eclim-daemon][Eclim daemon]]
- [[#maven][Maven]]
- [[#goto][Goto]]
- [[#refactoring-1][Refactoring]]
- [[#documentation-find][Documentation, Find]]
@ -58,6 +57,8 @@
- [[#refactoring-2][Refactoring]]
- [[#tests-1][Tests]]
- [[#repl][REPL]]
- [[#maven][Maven]]
- [[#gradle][Gradle]]
* Description
This layer adds support for the Java language.
@ -310,17 +311,6 @@ particular refactoring doesn't work.
| ~SPC m D k~ | Kill daemon |
| ~SPC m D s~ | Start daemon |
**** Maven
| Key Binding | Description |
|-------------+--------------------------------|
| ~SPC m m i~ | Run maven clean install |
| ~SPC m m I~ | Run maven install |
| ~SPC m m p~ | Run one already goal from list |
| ~SPC m m r~ | Run maven goals |
| ~SPC m m R~ | Run one maven goal |
| ~SPC m m t~ | Run maven test |
**** Goto
| Key Binding | Description |
@ -530,3 +520,30 @@ particular refactoring doesn't work.
| ~SPC m s i~ | start or switch to the REPL inferior process |
| ~SPC m s r~ | send region to the REPL |
| ~SPC m s R~ | send region to the REPL and focus the REPL buffer in =insert state= |
** Maven
| Key Binding | Description |
|-----------------+------------------------------------------------------|
| ~SPC m m c c~ | Compile |
| ~SPC m m c C~ | Clean |
| ~SPC m m c r~ | Clean and compile |
| ~SPC m m g a~ | Switch between class and test file |
| ~SPC m m g A~ | Switch between class and test file in another window |
| ~SPC m m t a~ | Run all tests |
| ~SPC m m t C-a~ | Clean and run all tests |
| ~SPC m m t b~ | Run current buffer tests |
| ~SPC m m t i~ | Test and install |
| ~SPC m m t t~ | Run a specific test |
** Gradle
| Key Binding | Description |
|---------------+--------------------------|
| ~SPC m l c c~ | Compile |
| ~SPC m l c C~ | Clean |
| ~SPC m l c r~ | Clean and compile |
| ~SPC m l t a~ | Run all tests |
| ~SPC m l t b~ | Run current buffer tests |
| ~SPC m l t t~ | Run a specific test |
| ~SPC m l x~ | Execute a Gradle task |

View file

@ -17,7 +17,6 @@
("mg" . "goto")
("mr" . "refactor")
("mh" . "documentation")
("mm" . "maven")
("ma" . "ant")
("mp" . "project")
("mt" . "test")))
@ -258,17 +257,29 @@
;; Maven
(defun spacemacs/java-maven-test ()
(defun spacemacs/mvn-clean-compile ()
"Recompile using maven."
(interactive)
(eclim-maven-run "test"))
(mvn-clean)
(mvn-compile))
(defun spacemacs/java-maven-clean-install ()
(interactive)
(eclim-maven-run "clean install"))
;; Gradle
(defun spacemacs/java-maven-install ()
(defun spacemacs/gradle-clean ()
"Execute 'gradle clean' command."
(interactive)
(eclim-maven-run "install"))
(gradle-execute "clean"))
(defun spacemacs/gradle-clean-build ()
"Execute 'gradle clean build' command."
(interactive)
(gradle-execute "clean build"))
(defun spacemacs/gradle-test-buffer ()
"Execute 'gradle test' command against current buffer tests."
(interactive)
(gradle-single-test (file-name-base (buffer-file-name))))
;; Misc

View file

@ -25,7 +25,9 @@
gradle-mode
helm-gtags
(java-mode :location built-in)
maven-test-mode
(meghanada :toggle (not (version< emacs-version "25.1")))
mvn
))
(defun java/post-init-company ()
@ -64,7 +66,6 @@
("mg" . "goto")
("mh" . "help/doc")
("mi" . "issues")
("mm" . "maven")
("mp" . "project")
("mr" . "refactor")
("mt" . "test")))
@ -90,13 +91,6 @@
"hh" 'eclim-java-show-documentation-for-current-element
"hi" 'eclim-java-hierarchy
"hu" 'eclim-java-find-references
;; maven
"mi" 'spacemacs/java-maven-clean-install
"mI" 'spacemacs/java-maven-install
"mp" 'eclim-maven-lifecycle-phases
"mr" 'eclim-maven-run
"mR" 'eclim-maven-lifecycle-phase-run
"mt" 'spacemacs/java-maven-test
;; project
"pb" 'eclim-project-build
"pc" 'eclim-project-create
@ -323,7 +317,30 @@
(defun java/init-gradle-mode ()
(use-package gradle-mode
:defer t))
:defer t
:init
(progn
(when (configuration-layer/package-used-p 'groovy-mode)
(add-hook 'groovy-mode-hook 'gradle-mode)
(spacemacs/declare-prefix-for-mode 'groovy-mode "ml" "gradle")
(spacemacs/declare-prefix-for-mode 'groovy-mode "mc" "compile")
(spacemacs/declare-prefix-for-mode 'groovy-mode "mlt" "tests"))
(when (configuration-layer/package-used-p 'java-mode)
(add-hook 'java-mode-hook 'gradle-mode)
(spacemacs/declare-prefix-for-mode 'java-mode "ml" "gradle")
(spacemacs/declare-prefix-for-mode 'groovy-mode "mc" "compile")
(spacemacs/declare-prefix-for-mode 'java-mode "mlt" "tests")))
:config
(progn
(spacemacs|hide-lighter gradle-mode)
(spacemacs/set-leader-keys-for-minor-mode 'gradle-mode
"lcc" 'gradle-build
"lcC" 'spacemacs/gradle-clean
"lcr" 'spacemacs/gradle-clean-build
"lta" 'gradle-test
"ltb" 'spacemacs/gradle-test-buffer
"ltt" 'gradle-single-test
"lx" 'gradle-execute))))
(defun java/post-init-helm-gtags ()
(spacemacs/helm-gtags-define-keys-for-mode 'java-mode))
@ -337,6 +354,27 @@
(put 'java-backend 'safe-local-variable 'symbolp)
(spacemacs//java-define-command-prefixes))))
(defun java/init-maven-test-mode ()
(use-package maven-test-mode
:defer t
:init
(when (configuration-layer/package-used-p 'java-mode)
(add-hook 'java-mode-hook 'maven-test-mode)
(spacemacs/declare-prefix-for-mode 'java-mode "mm" "maven")
(spacemacs/declare-prefix-for-mode 'java-mode "mmg" "goto")
(spacemacs/declare-prefix-for-mode 'java-mode "mmt" "tests"))
:config
(progn
(spacemacs|hide-lighter maven-test-mode)
(spacemacs/set-leader-keys-for-minor-mode 'maven-test-mode
"mga" 'maven-test-toggle-between-test-and-class
"mgA" 'maven-test-toggle-between-test-and-class-other-window
"mta" 'maven-test-all
"mtC-a" 'maven-test-clean-test-all
"mtb" 'maven-test-file
"mti" 'maven-test-install
"mtt" 'maven-test-method))))
(defun java/init-meghanada ()
(use-package meghanada
:defer t
@ -389,3 +427,15 @@
;; meghanada-local-variable
"x:" 'meghanada-run-task))))
(defun java/init-mvn ()
(use-package mvn
:defer t
:init
(when (configuration-layer/package-used-p 'java-mode)
(spacemacs/declare-prefix-for-mode 'java-mode "mm" "maven")
(spacemacs/declare-prefix-for-mode 'java-mode "mmc" "compile")
(spacemacs/set-leader-keys-for-major-mode 'java-mode
"mcc" 'mvn-compile
"mcC" 'mvn-clean
"mcr" 'spacemacs/mvn-clean-compile))))