Mit diesen beiden kleinen Shell-Schnipseln programmiert es sich leichter, wenn man mit Java auf dem Mac arbeitet. Einfach in .bashrc oder .zshrc im Home-Verzeichnis des entwickelnden Users einfügen und genießen!

Java-Version auf Kommando umschaltbar

Wenn man abwechselnd für mehrere Projekte programmiert, die unterschiedliche JDK-Versionen haben, dann hilft es, wenn man auf der Command Line ein einfaches Kommando hat, um auf das jeweils richtige JDK umzuschalten.

Hier ein Kommando, um herauszufinden, welche JDKs auf der Maschine sind:

/usr/libexec/java_home -V

Dann ein Schnipsel zum Einfügen in .bashrc oder .zshrc:

jdk() {
        version=$1
        export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
        java -version
}

Shell einmalig neu öffnen. Dann funktioniert z.B. so etwas in Zukunft automatisch:

% jdk 14

openjdk version "14.0.1" 2020-04-14
OpenJDK Runtime Environment AdoptOpenJDK (build 14.0.1+7)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 14.0.1+7, ...)

% jdk 1.8

java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, ...)

Dotenv in einer Zeile

Ab und zu müssen Programme mit genau definierten Werten für die Environment-Variablen gestartet werden (z.B. für URLs von Datenbanken oder Codes für AWS Secrets). Bisher machte ich das immer mit einer .env Datei und einem Tool wie dotenv oder foreman.

Das funktionierte bei mir so lange bis die React-Leute ebenfalls anfingen, .env zu benutzen. Damit war die Datei "verbrannt".

Jetzt fand ich hier eine schöne, kurze Alternative dazu: Man schreibe eine eigene Datei, z.B. .backend-env und führe das Kommando mit dem Vorsatz de (wie "dot-env") aus. Das de Kommando definiert man ebenfalls in .bashrc oder .zshrc:

de() { [ -f .backend-env ] && <.backend-env grep -v "^#" | tr '\n' ' ' | xargs -J% env % "$@"; }

Als Beispiel eine Datei .backend-env:

DATABASE_URL=jdbc:postgresql://localhost:5432/mydb?user=dbuser&password=dbpassword

Dann:

% de ./gradlew run

Connecting to database at DATABASE_URL...
Success!

Titelbild

Danke an die Fotografin @helloimnik

Photo by Hello I’m Nik 🎞 on Unsplash
person suspended on air while riding skateboard