为了在Java生态系统中适当地工作,可以在pom.xml文件中将库的可选依赖项包括在具有'scope'='provided'的作用域内。
deps.edn明确定义地不支持包含具有'provided'作用域的依赖项,而是使用别名。
为了作为更大Java生态系统中的库,能够写入包含非deps.edn中包含的附加依赖项(对于Java构建工具具有'scope'='provided')的库jar文件将非常有帮助。
例如,cljdoc就无法在构建库时包含所有依赖项来生成文档。
'write-pom'已经有一个选项包括模板'source' pom.xml,但依赖项将被deps.edn文件中的信息覆盖。
有一些解决方案,例如参见https://clojurians.slack.com/archives/C8V0BQ0M6/p1680090647156119,可以修改流程以包含具有'provided'作用域的依赖项,但这些并不是最理想的。
选项。
不采取行动 - 按照Slack线程中的示例修改tools.build,或者更改生成的pom.xml以包含具有额外'provided'作用域的依赖项。
合并源(模板)pom.xml中的现有依赖项,而不是覆盖[但可能是一个破坏性变更]
为write-pom提供一个额外的参数来包含任意依赖项,这将是转换为XML的映射序列,包括:作用域,对于这些可选依赖项将是:'provided'。
与cljdoc合作以支持别名,以便库作者可以自定义文档构建,这样类似的构建就不会失败。