Effizienztricks für Java auf dem Mac

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

Speichern
Teilen

    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