Skip to main content

SdkMan To The Rescue!

Super hero
Technologie

SdkMan To The Rescue!

11 November 2021 - reading time: 
3
 min.

SdkMan is een software development kit manager te gebruiken via die commandline en dit voor elk linux gebaseerd systeem.
Ondergetekende is zuiver een gebruiker en fan van deze tool, deze blog is ook van uit die optiek geschreven!

Op de site van SdkMan zelf kan je alles terugvinden, de tool is super simpel te gebruiken, just install it!

kevin@one16.be ~ % curl -s "https://get.sdkman.io" | bash

Het gebruik van de tool biedt onder andere volgende voordelen:

  • Het maakt je leven een pak gemakkelijker, je moet niet bijvoorbeeld steeds je PATH aanpassen.
  • De usual suspects van de SDK's en build tools kan je er terug in vinden: Java, Scala, Maven, Spring Boot, Gradle, ...
  • Je kan naadloos switchen tussen verschillende versies.
  • Je hebt geen extra tools nodig, als je iets kan unzippen, curlen en een bash terminal kan openen heb je voldoende om er mee aan de slag te gaan!

Voor alle duidelijkheid, ik heb nog geen nadelen ondervonden van deze tool.  Maar moest er iemand mij op enkele kunnen wijzigen, aarzel dan zeker niet om mij te contacteren!

Voor alle commando's en mogelijkheden verwijs ik jullie graag naar de site van SdkMan zelf, maar laten we vlug een use case even uitwerken, zodat je de kracht van deze krachtige tool aan het werk ziet.

In actie

Stel we willen maven runnen!  We checken welke versie we voor handen hebben.

kevin@one16.be ~ % mvn -version
zsh: command not found: mvn

Whoopsie, momenteel hebben we nog geen maven geïnstalleerd.  Ha ja, net een nieuwe laptop aangeschaft.

We kijken even welke versie er voor handen zijn via het commando:

kevin@one16.be ~ % sdk list maven

Als resultaat krijgen we het volgende:

Maven candidates

Ideaal, we installeren  maven 3.8.3.

kevin@one16.be ~ % sdk install maven 3.8.3
Downloading: maven 3.8.3
In progress...
############################################################################################################################################################################################################################## 100.0%
Installing: maven 3.8.3
Done installing!
Setting maven 3.8.3 as default.

Mooi, nu kunnen we aan de slag!  Tegelijkertijd zien we welke java versie we momenteel gebruiken.

kevin@one16.be ~ % mvn -version
Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
Maven home: /Users/kevin/.sdkman/candidates/maven/current
Java version: 17, vendor: Azul Systems, Inc., runtime: /Users/kevin/.sdkman/candidates/java/17.0.0-zulu/zulu-17.jdk/Contents/Home
Default locale: en_BE, platform encoding: UTF-8
OS name: "mac os x", version: "11.5", arch: "x86_64", family: "mac"
kevin@one16.be ~ % sdk current java
Using java version 17.0.0-zulu

Let's play

Via het list commando vragen we even de mogelijkheden van java op en kiezen we de laatste versie van oracle even.  We zetten hem ook even onmiddellijk als default.  Overigens, dat we hier het woord "even" kunnen gebruiken bewijst eigenlijk al de kracht van SdkMan!

kevin@one16.be ~ % sdk list java
kevin@one16.be ~ % sdk install java 17.0.1-oracle
Downloading: java 17.0.1-oracle
In progress...
############################################################################################################################################################################################################################### 100.0%
Repackaging Java 17.0.1-oracle...
Done repackaging...
Cleaning up residual files...
Installing: java 17.0.1-oracle
Done installing!
Do you want java 17.0.1-oracle to be set as default? (Y/n):
Y
Setting java 17.0.1-oracle as default.

Als we nu onze maven versie nog eens opvragen krijgen we volgende effect:

kevin@one16.be ~ % mvn -version
Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
Maven home: /Users/kevin/.sdkman/candidates/maven/current
Java version: 17.0.1, vendor: Oracle Corporation, runtime: Users/kevin/.sdkman/candidates/java/17.0.1-oracle
Default locale: en_BE, platform encoding: UTF-8
OS name: "mac os x", version: "11.6", arch: "x86_64", family: "mac"
 

We switchen on-the-fly nog eens van java versie, eerst kijken we welke we momenteel zelf alvast geïnstalleerd hebben:

kevin@one16.be ~ % sdk list java | grep installed
| >>> | 17.0.1       | oracle  | installed  | 17.0.1-oracle
|        | 17.0.0       | zulu     | installed  | 17.0.0-zulu

En dan even switchen en kijken of onze maven build tool de nieuwe versie heeft opgepikt:

kevin@one16.be ~ % sdk use java 17.0.0-zulu
Using java version 17.0.0-zulu in this shell.
 
kevin@one16.be ~ % mvn -version
Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
Maven home: /Users/kevin/.sdkman/candidates/maven/current
Java version: 17, vendor: Azul Systems, Inc., runtime: /Users/kevin/.sdkman/candidates/java/17.0.0-zulu/zulu-17.jdk/Contents/Home
Default locale: en_BE, platform encoding: UTF-8
OS name: "mac os x", version: "11.5", arch: "x86_64", family: "mac"

Besluit:

Gebruik dat ding gewoon, het zal je leven gemakkelijker maken!

Referenties:

SdkMan te vinden op sdkman.io.

Foto via pexels.com.