2016-08-15 62 views
0

外部罐子我想写一个Dropwizard应用程序及其文档告诉我,我需要的一切船舶作为超级罐子。与Dropwizard

然而,在我的应用程序需要支持多个数据库,这需要在我的类路径多个数据库的JDBC驱动程序罐,预计不会与我的应用程序一起提供所有这一切。用户需要将相应的JDBC jar文件像mysql-connector-java-5.1.39.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文件夹中的启动脚本。启动时,你的classpath将只是

lib/* 

当你把罐子到该文件夹​​,它们将自动被拾起(在启动时,而不是在运行时)。

我希望这有助于

阿图尔