Mein erster Reflex war nicht verwenden env.CLASSPATH, aber auf den zweiten Gedanken und beim Nachdenken über warum sollte man es nicht Ich begann die Idee likeing, zumindest für eine lokale Entwicklungs- und Testumgebung (und zumindest für eine Weile)
der Vorteil dieses Ansatzes ist, dass Sie einen lokalen Ordner mit allen gemeinsamen Bibliotheken halten können (log4j, dom4j, joda Zeit, google Sammlungen, die apache commons Zoo, .. .). So können Sie alle Ihre Anwendungen von der Shell aus kompilieren und ausführen, ohne lange Zeit damit zu verschwenden, lange Klassenpfadargumente einzugeben.
Und Ihr noch frei, ein -cp
Argument zu verwenden, weil es die globale CLASSPATH
Einstellung ersetzt.
Ich würde es nie auf einem Produktionssystem verwenden. Das Risiko ist einfach zu hoch, dass jemand den Inhalt dieses Ordners oder die CLASSPATH
Variable ändert und meine Anwendung nicht mehr funktioniert.
Also für die Produktion, keine globale 'CLASSPATH' und keine Platzhalter in der Klassenpfadzeichenfolge.
Ein Nachteil der Wildcard-Pfad in einer Umgebung wie oben verwenden: Nach einer Weile zu viele Projekte hängen von dem einzelnen Bibliotheksordner ab. Sie kennen die Nebeneffekte des Aktualisierens einer Bibliothek oder des Löschens einer alten Bibliothek nicht. Und für große Anwendungen kann es schwierig sein herauszufinden, welche Bibliotheken aus dem Pool wirklich benötigt werden.Sie könnten am Ende unbenutzte libs zum Produkt hinzufügen, nur weil Sie nicht sicher sind, ob die Anwendung ohne diese lib ausgeführt wird.
Also meine Schlussfolgerung - eine nette Abkürzung für Entwicklung, Tests, Prototyping, aber riskant für die Produktion. Für die Produktion würde ich (automatisch generierte) Klassenpfadzeichenfolgen ohne Platzhalter bevorzugen.
fwiw, mein lib-Ordner wird von meinem Maven Build aus meinen Abhängigkeiten mit dem Appassembler-Plugin als Teil der Verpackungsphase neu erstellt. Mein POM ist das letzte Dokument zum Definieren des Klassenpfads. –