带有 Dropwizard 的外部罐子
External jars with Dropwizard
我正在尝试编写一个 Dropwizard 应用程序,它的文档告诉我我需要将所有内容都作为一个 uber jar 发送。
但是,在我的应用程序中,我需要支持多个数据库,这需要我的类路径中有多个数据库 JDBC 驱动程序 jar,所有这些都不会与我的应用程序一起提供。用户需要将相应的 JDBC jar 如 mysql-connector-java-5.1.39.jar 放置在自己的特定文件夹中。
在阅读了 Dropwizard 的 documentation 后,我不确定是否支持这种用法。有没有人有过以这种方式工作的经验?
自 java6 起,您可以使用通配符类路径。
使用应用程序插件,生成的 bin 文件夹将有一个包含类路径的启动脚本。我们想要做的是,不是在 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 文件夹。启动时,您的类路径将只是
lib/*
当您将 jar 放入该文件夹时,它们会自动被拾取(在启动时,而不是在运行时)。
希望对您有所帮助,
亚瑟
我正在尝试编写一个 Dropwizard 应用程序,它的文档告诉我我需要将所有内容都作为一个 uber jar 发送。
但是,在我的应用程序中,我需要支持多个数据库,这需要我的类路径中有多个数据库 JDBC 驱动程序 jar,所有这些都不会与我的应用程序一起提供。用户需要将相应的 JDBC jar 如 mysql-connector-java-5.1.39.jar 放置在自己的特定文件夹中。
在阅读了 Dropwizard 的 documentation 后,我不确定是否支持这种用法。有没有人有过以这种方式工作的经验?
自 java6 起,您可以使用通配符类路径。
使用应用程序插件,生成的 bin 文件夹将有一个包含类路径的启动脚本。我们想要做的是,不是在 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 文件夹。启动时,您的类路径将只是
lib/*
当您将 jar 放入该文件夹时,它们会自动被拾取(在启动时,而不是在运行时)。
希望对您有所帮助,
亚瑟