2016-08-15 4 views
0

私はDropwizardアプリケーションを作成しようとしています。その文書では、すべてをuber jarとして出荷する必要があることがわかります。Dropwizardを使用した外部のjarファイル

しかし、私のアプリケーションでは、複数のデータベースをサポートする必要があり、クラスパスに複数のデータベースJDBCドライバが必要です。これらはすべてアプリケーションと一緒に出荷される予定はありません。ユーザは、特定のフォルダにmysql-connector-java-5.1.39.jarのような対応するJDBC jarを自分で配置することが期待されます。

Dropwizardのdocumentationを読んだ後、この種の使用法がサポートされているかどうかはわかりません。誰もがこのように働く経験を持っていますか?

+0

を役に立てば幸い? – pandaadb

+0

@pandaadbビルドツールとしてGradleを使用しています。 – nybon

答えて

1

java 6以降、クラスパスをワイルドカードで指定できます。

アプリケーションプラグインを使用すると、生成されたbinフォルダにクラスパスを含む開始スクリプトが作成されます。私たちがしたいことは、可能なすべてのjarファイルをbinフォルダにリストするのではなく、単にすべてのjarファイルを含めるだけです。

注:クラスパスを別の場所に配置する場合は、別のフォルダでも同じことができます。

これは、私のバージョンでこのプラグインに問題があるため、回避策として、以下のように最も簡単な方法で達成できます。 build.gradleでは、次の操作を行います。

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/*') 
    } 
} 

これは、起動スクリプトでlibフォルダをワイルドカードにします。起動すると、あなたのクラスパスは、単にあなたがそのフォルダにjarファイルをドロップすると、彼らは自動的に(起動時に、ではないランタイム上で)ピックアップします

lib/* 

になります。

私は、これは、あなたがどのようなビルドシステムを使用している

アルトゥル

関連する問題