--- /dev/null
+===============================================================================
+ALE Java Integration *ale-java-options*
+
+
+===============================================================================
+checkstyle *ale-java-checkstyle*
+
+ *ale-options.java_checkstyle_config*
+ *g:ale_java_checkstyle_config*
+ *b:ale_java_checkstyle_config*
+java_checkstyle_config
+g:ale_java_checkstyle_config
+ Type: |String|
+ Default: `'/google_checks.xml'`
+
+ A path to a checkstyle configuration file.
+
+ If a configuration file is specified with |g:ale_java_checkstyle_options|,
+ it will be preferred over this setting.
+
+ The path to the configuration file can be an absolute path or a relative
+ path. ALE will search for the relative path in parent directories.
+
+ *ale-options.java_checkstyle_executable*
+ *g:ale_java_checkstyle_executable*
+ *b:ale_java_checkstyle_executable*
+java_checkstyle_executable
+g:ale_java_checkstyle_executable
+ Type: |String|
+ Default: `'checkstyle'`
+
+ This variable can be changed to modify the executable used for checkstyle.
+
+ *ale-options.java_checkstyle_options*
+ *g:ale_java_checkstyle_options*
+ *b:ale_java_checkstyle_options*
+java_checkstyle_options
+g:ale_java_checkstyle_options
+ Type: |String|
+ Default: `''`
+
+ This variable can be changed to modify flags given to checkstyle.
+
+ If a configuration file is specified with `-c`, it will be used instead of
+ configuration files set with |g:ale_java_checkstyle_config|.
+
+
+===============================================================================
+clang-format *ale-java-clangformat*
+
+See |ale-c-clangformat| for information about the available options.
+Note that the C options are also used for Java.
+
+
+===============================================================================
+cspell *ale-java-cspell*
+
+See |ale-cspell-options|
+
+
+===============================================================================
+javac *ale-java-javac*
+
+ *ale-options.java_javac_classpath*
+ *g:ale_java_javac_classpath*
+ *b:ale_java_javac_classpath*
+java_javac_classpath
+g:ale_java_javac_classpath
+ Type: |String| or |List|
+ Default: `''`
+
+ This variable can be set to change the global classpath for Java.
+
+ *ale-options.java_javac_executable*
+ *g:ale_java_javac_executable*
+ *b:ale_java_javac_executable*
+java_javac_executable
+g:ale_java_javac_executable
+ Type: |String|
+ Default: `'javac'`
+
+ This variable can be set to change the executable path used for javac.
+
+ *ale-options.java_javac_options*
+ *g:ale_java_javac_options*
+ *b:ale_java_javac_options*
+java_javac_options
+g:ale_java_javac_options
+ Type: |String|
+ Default: `''`
+
+ This variable can be set to pass additional options to javac.
+
+ *ale-options.java_javac_sourcepath*
+ *g:ale_java_javac_sourcepath*
+ *b:ale_java_javac_sourcepath*
+java_javac_sourcepath
+g:ale_java_javac_sourcepath
+ Type: |String| or |List|
+ Default: `''`
+
+ This variable can set multiple source code paths, the source code path is a
+ relative path (relative to the project root directory).
+
+ The source path can be set as a String with a system-dependent path
+ separator. Note that the Unix path separator is a colon (`:`), and on
+ Windows the path separator is a semicolon (`;`). >
+
+ let g:ale_java_javac_sourcepath = 'build/gen/source/xx/main:build/gen/source'
+<
+ The source path can be set as a List so ALE will add the appropriate path
+ separator for the host system automatically. >
+
+ let g:ale_java_javac_sourcepath = [
+ \ 'build/generated/source/querydsl/main',
+ \ 'target/generated-sources/source/querydsl/main',
+ \]
+<
+
+===============================================================================
+google-java-format *ale-java-google-java-format*
+
+ *ale-options.java_google_java_format_executable*
+ *g:ale_java_google_java_format_executable*
+ *b:ale_java_google_java_format_executable*
+java_google_java_format_executable
+g:ale_java_google_java_format_executable
+ Type: |String|
+ Default: `'google-java-format'`
+
+ See |ale-integrations-local-executables|
+
+ *ale-options.java_google_java_format_options*
+ *g:ale_java_google_java_format_options*
+ *b:ale_java_google_java_format_options*
+java_google_java_format_options
+g:ale_java_google_java_format_options
+ Type: |String|
+ Default: `''`
+
+ This variable can be set to pass additional options
+
+
+===============================================================================
+pmd *ale-java-pmd*
+
+ *ale-options.java_pmd_options*
+ *g:ale_java_pmd_options*
+ *b:ale_java_pmd_options*
+java_pmd_options
+g:ale_java_pmd_options
+ Type: |String|
+ Default: `'-R category/java/bestpractices'`
+
+ This variable can be changed to modify flags given to PMD. Do not specify -f
+ and -d. They are added automatically.
+
+
+===============================================================================
+javalsp *ale-java-javalsp*
+
+To enable Java LSP linter you need to download and build the vscode-javac
+language server from https://github.com/georgewfraser/java-language-server.
+
+Before building the language server you need to install pre-requisites: npm,
+maven, and protobuf. You also need to have Java 13 and JAVA_HOME properly
+set.
+
+After downloading the source code and installing all pre-requisites you can
+build the language server with the included build.sh script:
+
+ `scripts/build.sh`
+
+This will create launch scripts for Linux, Mac, and Windows in the dist folder
+within the repo:
+
+ - `lang_server_linux.sh`
+ - `lang_server_mac.sh`
+ - `lang_server_windows.sh`
+
+To let ALE use this language server you need to set the executable, as
+documented below.
+
+ *ale-options.java_javalsp_executable*
+ *g:ale_java_javalsp_executable*
+ *b:ale_java_javalsp_executable*
+java_javalsp_executable
+g:ale_java_javalsp_executable
+ Type: |String|
+ Default: `''`
+
+ This variable must be set to the absolute path of the language server
+ launcher executable. For example: >
+
+ let g:ale_java_javalsp_executable = '/java-language-server/dist/lang_server_linux.sh'
+<
+ *ale-options.java_javalsp_config*
+ *g:ale_java_javalsp_config*
+ *b:ale_java_javalsp_config*
+java_javalsp_config
+g:ale_java_javalsp_config
+ Type: |Dictionary|
+ Default: `{}`
+
+ The javalsp linter automatically detects external dependencies for Maven and
+ Gradle projects. In case the javalsp fails to detect some of them, you can
+ specify them configuring settings for the language server, such as in your
+ ftplugin file. >
+
+ let b:ale_java_javalsp_config = {
+ \ 'java': {
+ \ 'externalDependencies': [
+ \ 'junit:junit:jar:4.12:test',
+ \ 'junit:junit:4.1'
+ \ ],
+ \ 'classPath': [
+ \ 'lib/some-dependency.jar',
+ \ '/android-sdk/platforms/android-28.jar',
+ \ ],
+ \ },
+ \}
+<
+ Or in Lua: >
+
+ require("ale").setup.buffer({
+ java_lsp_config = {
+ java = {
+ externalDependencies = {
+ "junit:junit:jar:4.12:test",
+ "junit:junit:4.1"
+ },
+ classPath = {
+ "lib/some-dependency.jar",
+ "/android-sdk/platforms/android-28.jar",
+ },
+ },
+ }
+ })
+<
+ The Java language server will look for the dependencies you specify in
+ `externalDependencies` array in your Maven and Gradle caches ~/.m2 and
+ ~/.gradle.
+
+
+===============================================================================
+eclipselsp *ale-java-eclipselsp*
+
+To enable Eclipse JDT LSP linter you need to clone and build the eclipse.jdt.ls
+language server from https://github.com/eclipse/eclipse.jdt.ls. Simply
+clone the source code repo and then build the plugin:
+
+ `./mvnw clean verify`
+
+Note: currently, the build can only run when launched with JDK 11. More
+recent versions can be used to run the server though.
+
+After build completes the files required to run the language server will be
+located inside the repository folder `eclipse.jdt.ls`. Please ensure to set
+|g:ale_java_eclipselsp_path| to the absolute path of that folder.
+
+You could customize compiler options and code assists of the server.
+Under your project folder, modify the file `.settings/org.eclipse.jdt.core.prefs`
+with options presented at
+https://help.eclipse.org/neon/topic/org.eclipse.jdt.doc.isv/reference/api/org/eclipse/jdt/core/JavaCore.html.
+
+ *ale-options.java_eclipselsp_path*
+ *g:ale_java_eclipselsp_path*
+ *b:ale_java_eclipselsp_path*
+java_eclipselsp_path
+g:ale_java_eclipselsp_path
+ Type: |String|
+ Default: `'$HOME/eclipse.jdt.ls'`
+
+ Absolute path to the location of the eclipse.jdt.ls repository folder. Or if
+ you have VSCode extension installed the absolute path to the VSCode
+ extensions folder (e.g. $HOME/.vscode/extensions/redhat.java-0.4x.0 in
+ Linux).
+
+ *ale-options.java_eclipselsp_executable*
+ *g:ale_java_eclipselsp_executable*
+ *b:ale_java_eclipse_executable*
+java_eclipselsp_executable
+g:ale_java_eclipselsp_executable
+ Type: |String|
+ Default: `'java'`
+
+ This variable can be set to change the executable path used for java.
+
+ *ale-options.java_eclipselsp_config_path*
+ *g:ale_java_eclipselsp_config_path*
+ *b:ale_java_eclipse_config_path*
+java_eclipselsp_config_path
+g:ale_java_eclipselsp_config_path
+ Type: |String|
+ Default: `''`
+
+ Set this variable to change the configuration directory path used by
+ eclipselsp (e.g. `$HOME/.jdtls` in Linux). By default ALE will attempt to
+ use the configuration within the installation directory.
+
+ This setting is particularly useful when eclipselsp is installed in a
+ non-writable directory like `/usr/share/java/jdtls`, as is the case when
+ installed via system package.
+
+ *ale-options.java_eclipselsp_workspace_path*
+ *g:ale_java_eclipselsp_workspace_path*
+ *b:ale_java_eclipselsp_workspace_path*
+java_eclipselsp_workspace_path
+g:ale_java_eclipselsp_workspace_path
+ Type: |String|
+ Default: `''`
+
+ If you have Eclipse installed it is a good idea to set this variable to the
+ absolute path of the Eclipse workspace. If not set this value will be set to
+ the parent folder of the project root.
+
+ *ale-options.java_eclipselsp_javaagent*
+ *g:ale_java_eclipselsp_javaagent*
+ *b:ale_java_eclipselsp_javaagent*
+java_eclipselsp_javaagent
+g:ale_java_eclipselsp_javaagent
+ Type: |String|
+ Default: `''`
+
+ A variable to add java agent for annotation processing such as Lombok.
+ If you have multiple java agent files, use space to separate them.
+ For example: >
+
+ let g:ale_java_eclipselsp_javaagent='/eclipse/lombok.jar /eclipse/jacoco.jar'
+<
+
+===============================================================================
+uncrustify *ale-java-uncrustify*
+
+See |ale-c-uncrustify| for information about the available options.
+
+
+===============================================================================
+ vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl: