1

我目前正在维护一个jodconverter项目的分支,该项目提供了一个 spring-boot-starter 模块,允许基于 spring-boot 的应用程序使用 Open/Libre Office 安装(在同一台服务器上)来自动化文档转换。

现在,该项目已经发展壮大,并诞生了一个名为jodconverter-online的新模块。这个模块将向 LibreOffice Online 服务器发送转换请求,我现在想创建一个 spring-boot 启动器来支持这个新模块。

当前的 jodconverter-local(依赖于当前的 jodconverter-spring-boot-starter)与 jodconverter-online 模块的依赖关系不同。这就是为什么它们首先是两个独立的模块。

所以我的问题是:

我应该创建一个新的 jodconverter-online-spring-boot-starter 还是可以(以及如何)只修改当前的启动项目,根据用户的需要使依赖项成为可选的。

现在我把它全部放在当前的启动项目中(它在 OSS 快照存储库中作为 4.2.0-SNAPSHOT 可用),但我这样做是错误的,因为它会自动添加两个 jodconverter-local 的依赖项和 jodconverter-online 模块。

4

1 回答 1

1

您可能希望对jodconverter-localjodconverter-online的依赖项是可选的,您只需在 Gradle 构建文件中替换关键字compileby compileOnly

显然,当依赖项变为可选时,开发人员将不得不选择其中一个选项并将其添加到他们项目的依赖项中(除了您的启动器之外)。

如果唯一的附加依赖项是jodconverter-localjodconverter-online,那没什么大不了的。但是如果必须为每种情况添加更多依赖项,那么您可能会考虑创建一个新的启动器来封装这些依赖项。

至于自动配置,我认为您所做的没有任何问题,因为您@ConditionalOnClass仅在类路径上存在相应的类时才使用触发自动配置。

于 2018-02-21T02:31:22.393 回答