为了正确地在 Java 生态系统中运行,库的可选依赖项可以在 pom.xml 文件中以 'provided' 范围包含。
deps.edn 明确不支持包含具有 'provided' 范围的依赖项,而是推荐使用别名。
为了在更广泛的 Java 生态系统中作为库良好运行,能够输出一个库 JAR 文件,该文件包含一个 pom.xml 文件以及包含但不包括在 deps.edn 中的额外依赖项(对于 Java 构建工具,范围为 'provided'),将非常有帮助。
例如,cljdoc 无法在库构建时包括所有依赖项而构建文档。
'write-pom' 已经有一个选项来包含一个模板 'source' pom.xml,但是依赖项将被 deps.edn 文件中的信息覆盖。
有一些解决方案 - 例如,请参见线程 https://clojurians.slack.com/archives/C8V0BQ0M6/p1680090647156119,其中修补过程以包含具有 'provided' 范围的依赖项 - 但它们并不是理想的。
选项。
不采取任何行动 - 按照 Slack 线程示例对 tools.build 进行 monkey patch,或更改生成的 pom.xml 以包括额外的 'provided' 范围依赖项。
合并(源)pom.xml 中的现有依赖项而不是覆盖(但可能是一个破坏性的更改)
为 'write-pom' 提供一个额外的参数以包含任意依赖项,这是一个映射的序列,它被转换为 XML,包括 :scope,对于这些可选依赖项将是 :provided。
与 cljdoc 协作以支持别名,这样可以由库作者自定义文档构建,如此类构建不会失败。