用SDKMAN管理多个Java SDK!轻松搞定

3,766 阅读2分钟

SDKMAN!是一个方便的工具,用于管理多个软件开发工具包的并行版本。该工具对Java开发者特别有用,因为它支持JVM的SDK,如Java、Groovy、Scala、Kotlin和Ceylon。还支持Gradle、Maven、Spring Boot和许多其他软件。

*SDKMAN!*支持包括Windows在内的所有主要操作系统,不过它最容易安装在所有基于Unix的系统上。

在macOS上,打开一个终端并运行。

curl -s "https://get.sdkman.io" | bash

下载完毕后,重新启动终端会话或运行。

source "$HOME/.sdkman/bin/sdkman-init.sh"

提示:我使用iTerm2终端作为默认。阅读我在macOS上使用的工具:macOS:(Java)开发人员的基本工具

安装完毕后,SDKMAN!提供了一个方便的sdk ,用于管理SDK,称为Candidates。要列出所有可用的候选程序,请使用sdk list 命令。

管理Java版本

我最喜欢的是*SDKMAN!*在您的操作系统中管理不同的Java版本是非常容易的。您可以通过基本命令列出、安装、卸载并将选定的Java版本设置为默认版本。

  • 要列出可用的Java版本,请运行。

    sdk list java

$ sdk list java
================================================================================
Available Java Versions
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 AdoptOpenJDK  |     | 13.0.1.j9    | adpt    |            | 13.0.1.j9-adpt
               |     | 13.0.1.hs    | adpt    |            | 13.0.1.hs-adpt
 GraalVM       |     | 19.3.0.r11   | grl     |            | 19.3.0.r11-grl
               |     | 19.3.0.r8    | grl     |            | 19.3.0.r8-grl
               |     | 19.3.0.2.r11 | grl     |            | 19.3.0.2.r11-grl
 Java.net      |     | 15.ea.2      | open    |            | 15.ea.2-open
               |     | 14.ea.28     | open    |            | 14.ea.28-open
               | >>> | 13.0.1       | open    | installed  | 13.0.1-open
               |     | 12.0.2       | open    | installed  | 12.0.2-open
               |     | 11.0.2       | open    |            | 11.0.2-open
               |     | 10.0.2       | open    |            | 10.0.2-open
               |     | 9.0.4        | open    |            | 9.0.4-open
================================================================================
Use the Identifier for installation:

    $ sdk install java 11.0.3.hs-adpt
================================================================================
  • 要安装指定的版本,使用标识符

    sdk install java 12.0.2-open

已安装的Java版本的二进制文件可以在*SDKMAN!*的主目录中找到,该目录默认为~/.sdkman/candidates/java

$ ls -al ~/.sdkman/candidates/java/
drwxr-xr-x  9 rafal.borowiec  staff  288 Jan  4 00:33 12.0.2-open
drwxr-xr-x  9 rafal.borowiec  staff  288 Oct  6 14:05 13.0.1-open
lrwxr-xr-x  1 rafal.borowiec  staff   57 Jan  4 00:20 current -> /Users/rafal.borowiec/.sdkman/candidates/java/13.0.1-open

如果你想在IntelliJ的项目中使用多个版本,这就很有用了。

  • 要将给定的版本设置为默认版本,请运行。

    sdk default java 12.0.2-open:

我们可以快速验证用sdk default 命令来改变版本是多么容易。

$ java -version
openjdk version "13.0.1" 2019-10-15
OpenJDK Runtime Environment (build 13.0.1+9)
OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)

$ ls -al ~/.sdkman/candidates/java/
drwxr-xr-x  9 rafal.borowiec  staff  288 Jan  4 00:33 12.0.2-open
drwxr-xr-x  9 rafal.borowiec  staff  288 Oct  6 14:05 13.0.1-open
lrwxr-xr-x  1 rafal.borowiec  staff   57 Jan  4 00:20 current -> /Users/rafal.borowiec/.sdkman/candidates/java/13.0.1-open

$ sdk default java 12.0.2-open
Default java version set to 12.0.2-open

$ java -version
openjdk version "12.0.2" 2019-07-16
OpenJDK Runtime Environment (build 12.0.2+10)
OpenJDK 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)

$ ls -al ~/.sdkman/candidates/java/
drwxr-xr-x  9 rafal.borowiec  staff  288 Jan  4 00:33 12.0.2-open
drwxr-xr-x  9 rafal.borowiec  staff  288 Oct  6 14:05 13.0.1-open
lrwxr-xr-x  1 rafal.borowiec  staff   57 Jan  5 11:49 current -> /Users/rafal.borowiec/.sdkman/candidates/java/12.0.2-open
  • 要在当前终端会话中使用给定的版本,请运行。

    sdk use java 12.0.2-open

安装Maven和Gradle

Maven和Gradle是开源工具,用于自动构建应用程序并管理其依赖关系。这两个工具都可以用SDKMAN来管理*!*。

  • 用下面的命令安装Maven。
$ sdk install maven

Downloading: maven 3.6.3
In progress... 100.0%
Installing: maven 3.6.3
Done installing!

Setting maven 3.6.3 as default.
  • 用下面的命令安装Gradle。
$ sdk install gradle

Downloading: gradle 6.0.1
In progress... 100.0%
Installing: gradle 6.0.1
Done installing!

Setting gradle 6.0.1 as default.

如果你需要多个版本的Gradle或Maven,你可以用sdk install maven 3.6.1 ,提供所需的版本来安装它们,然后用sdk setsdk default 命令在它们之间切换。

安装Spring Boot CLI

Spring Boot CLI是一个命令行工具,如果你想快速开发一个Spring应用程序,可以使用它。

你可以用sdk list springboot 命令检查可用的Spring Boot版本。

$ sdk list springboot
================================================================================
Available Springboot Versions
================================================================================
     2.2.2.RELEASE       2.0.1.RELEASE       1.5.1.RELEASE       1.2.3.RELEASE
     2.2.1.RELEASE       2.0.0.RELEASE       1.4.7.RELEASE       1.2.2.RELEASE
     2.2.0.RELEASE       1.5.22.RELEASE      1.4.6.RELEASE       1.2.1.RELEASE

通过运行sdk install springboot ,安装默认版本。

一旦安装,spring 命令就可用了。

$ spring
usage: spring [--help] [--version]
       <command> [<args>]

现在你可以通过运行以下命令启动一个新的Spring Boot项目。

$ spring init --build=gradle --java-version=12 --dependencies=web --packaging=jar my-app.zip
Using service at https://start.spring.io
Content saved to 'my-app.zip'

解开压缩包,从应用程序目录中运行。

gradle bootRun
Tomcat started on port(s): 8080 (http) with context path ''
2020-01-04 12:36:59.704  INFO 57156 --- [           main] com.example.myapp.DemoApplication        : Started DemoApplication in 1.251 seconds (JVM running for 1.485)

注意:上述命令使用了你用*SDKMAN!*的全局分布,你也可以通过调用./gradlew 命令在本地安装的Gradle中运行它。

一旦应用程序启动,请检查它是否对你的请求做出响应。

$ http localhost:8080
HTTP/1.1 404
Connection: keep-alive
Content-Type: application/json
Date: Sun, 05 Jan 2020 11:38:08 GMT
Keep-Alive: timeout=60
Transfer-Encoding: chunked
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers

{
    "error": "Not Found",
    "message": "No message available",
    "path": "/",
    "status": 404,
    "timestamp": "2020-01-05T11:38:08.041+0000"
}

提示:我使用的是httpie客户端,而不是cURL。在这篇博文中阅读我在macOS上使用的工具:macOS:(Java)开发人员的基本工具

链接

您是否使用 SDKMAN!?你觉得它什么时候有用?请在评论中分享您的想法。