2016-08-15 4 views
0

Ich versuche, eine Dropwizard-Anwendung zu schreiben, und ihr Dokument sagt mir, dass ich alles als ein Uber-Glas versenden muss.Externe Gläser mit Dropwizard

In meiner Anwendung muss ich jedoch mehrere Datenbanken unterstützen, und dies erfordert mehrere Datenbank-JDBC-Treiber-Jars in meinem Klassenpfad, von denen nicht alle zusammen mit meiner Anwendung ausgeliefert werden sollen. Von den Benutzern wird erwartet, dass sie das entsprechende JDBC jar wie mysql-connector-java-5.1.39.jar in einem bestimmten Ordner selbst platzieren.

Nach dem Lesen von Dropwizard documentation Ich bin mir nicht sicher, ob diese Art der Verwendung unterstützt wird. Hat jemand Erfahrung damit, so zu arbeiten?

+0

Welche Build-System verwenden Sie? – pandaadb

+0

@pandaadb Ich verwende Gradle als Build-Tool. – nybon

Antwort

1

Seit Java 6 können Sie Klassenpfade mit Platzhaltern versehen.

Mithilfe des Anwendungs-Plugins wird im generierten Ordner bin ein Startskript mit dem Klassenpfad erstellt. Was wir tun wollen, ist, statt alle möglichen JAR-Dateien im Ordner bin aufzulisten, wir fügen einfach alle ein.

Hinweis: Sie können dasselbe auch mit anderen Ordnern machen, wenn Sie den Klassenpfad an einem anderen Ort haben möchten.

Dies kann (in einer Umgehungslösung, da es Probleme mit diesem Plugin in meiner Version gibt) auf die einfachste Weise wie folgt erreicht werden. In build.gradle Sie tun:

startScripts { 
    doLast { 
    def windowsScriptFile = file getWindowsScript() 
    def unixScriptFile = file getUnixScript() 
    windowsScriptFile.text = windowsScriptFile.text.replaceAll('CLASSPATH=.*', 'CLASSPATH=\\$APP_HOME/lib/*') 
    unixScriptFile.text = unixScriptFile.text.replaceAll('CLASSPATH=.*', 'CLASSPATH=\\$APP_HOME/lib/*') 
    } 
} 

Dies wird Platzhalter Ihren lib-Ordner in den Startskripten. Bei der Inbetriebnahme müssen Sie nur Ihr Classpath

lib/* 

sein wird, wenn Sie Gläser in diesen Ordner ablegen, wird sie automatisch (beim Start, nicht auf der Laufzeit) abgeholt werden.

Ich hoffe, das hilft,

Artur