SdkMan To The Rescue!
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!
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.
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:
Als resultaat krijgen we het volgende:
Ideaal, we installeren 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.
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"
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!
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:
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:
| >>> | 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:
Using java version 17.0.0-zulu in this shell.
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!