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

欢迎!请参阅关于页面以了解更多相关信息。

+1
tools.build
重新分类

为了在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'作用域的依赖项,但这些并不是最理想的。

选项。

  1. 不采取行动 - 按照Slack线程中的示例修改tools.build,或者更改生成的pom.xml以包含具有额外'provided'作用域的依赖项。

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

  3. 为write-pom提供一个额外的参数来包含任意依赖项,这将是转换为XML的映射序列,包括:作用域,对于这些可选依赖项将是:'provided'。

  4. 与cljdoc合作以支持别名,以便库作者可以自定义文档构建,这样类似的构建就不会失败。

1 答案

+2
第一印象让我倾向于选择第3项。
遵循第3项,是否可以有一个类似Leiningen的`:pom-plugins`,它将生成`<plugins><plugin>...</plugin></plugins>`块?

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