java在构建Play应用程序后向其添加动态依赖项
我将我的Play应用程序作为服务器分发,该服务器由我的客户在prem上运行。我发布的功能之一是服务器端API,使他们能够插入在服务器地址空间中运行的代码。这段代码被编译为jar文件,并放入由我的安装程序创建的目录ext/
,其级别与常规的lib/
目录相同
问题是我没有一个好的方法让类装入器找到这些依赖项。我已经编写了一个自定义类加载器,只要是我的代码进行加载,它就可以正常工作。当我实例化顶级自定义类时就是这种情况,但不是更进一步,例如JDBC驱动程序或Kafka客户机,依赖于客户机代码
我找到的权宜之计是在应用程序启动bash脚本(2.6中的第341行)中,将:/path/to/server/ext/*
附加到长的、硬编码的app-classpath
列表中(这是一个很好的理由——我明白了)。想知道是否有更好的解决方案。例如,为什么不使用classpath
env变量呢
还是别的什么
# 1 楼答案
如果您只需要区分开发和部署之间的路径,为什么不将环境变量添加到
application.conf
:客户可以在
conf
文件夹中覆盖该路径以添加该路径更具可扩展性的解决方案:如果您的客户是使用群集处理应用程序(如Kubernetes)的大男孩和女孩,那么您可以拥有以下功能:
然后
MY_MAJESTIC_PATH
将在集群管理的生产过程中被覆盖。这应该由客户来处理