2024 Clojure 状态调查!中分享您的想法。

欢迎!请查看关于页面以获取更多关于此项目如何工作的信息。

+1
tools.build
重新分类

为了在 Java 生态系统内适当工作,可以将库的可选依赖项包括在 pom.xml 文件中,范围为 'provided'。

deps.edn 明确不支持使用范围为 'provided' 的依赖项,而是使用别名。

为了作为一个更广泛 Java 生态系统中的库,能够写入一个包含额外的依赖项(depens.edn 中未包含)并且范围为 'provided' 的库 jar 文件将非常有帮助。

例如,cljdoc 在构建库时无法包含所有适当的依赖项,导致无法构建文档。

'write-pom' 已经有了包含模板 'source' pom.xml 的选项,但依赖项会被从 deps.edn 文件中获得的信息覆盖。

有一些解决方法 - 例如,请参考线程 https://clojurians.slack.com/archives/C8V0BQ0M6/p1680090647156119 对过程进行补丁以包含具有 'provided' 范围的依赖项 - 但它们并不是理想的。

选项。

  1. 不采取行动 - 按照 Slack 线程示例修正 tools.build,或者修改生成的 pom.xml 以包含额外的 'provided' 范围依赖项。

  2. 合并现有的从源(模板)pom.xml 依赖项,而不是覆盖(但可能是一个破坏性更改)

  3. 为 'write-pom' 提供额外的参数以包含任意依赖项,这是一个包含 :scope 的映射序列,这些可选依赖项的范围将为 :provided。

  4. 与 cljdoc 合作以支持别名,以便库作者可以自定义文档构建,避免如此类构建失败。

1 答案

+2

以 https://clojure.atlassian.net/browse/TBUILD-38 登录

第一印象中,我更倾向于#3。
按照#3,是否有可能实现像`:pom-plugins` Leiningen的等效,从而生成`<plugins><plugin>...</plugin></plugins>`块?

是否有更好的方法添加自定义Maven块?一些Maven插件可以添加新的元素和属性。
对于:dependencies、:repositories和我们所设置的少量其他内容之外的部分,最好是在pom.xml模板中将这些信息放入。
...