2024 State of Clojure Survey! 中分享您的想法!

欢迎!请参阅 关于 页面以了解更多关于该功能的信息。

+1 投票
tools.build
重新分类

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

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

为了作为一个更广泛 Java 生态系统中的库有效地工作,能够输出一个具有 Pom.xml 文件(包含不在 deps.edn 中但带 'provided' 范围的额外依赖项)的库 JAR 文件会非常有用。

例如,cljdoc 无法在构建库且所有依赖项都未适当包含时构建文档。

'write-pom' 已有一项选项以包含一个模板 'source' Pom.xml,但依赖项被从 deps.edn 文件中的信息覆盖。

有解决方法 - 例如,请参阅线程 https://clojurians.slack.com/archives/C8V0BQ0M6/p1680090647156119,它通过包括范围 'provided' 的依赖项来修复过程 - 但它们不是理想的选择。

选项。

  1. 不采取行动 - 如 Slack 线程示例中一样 monkey patch tools.build,或以其他方式修改生成的 Pom.xml 来包括额外的 'provided' 范围依赖项。

  2. 合并来自(模板)Pom.xml 的现有依赖项,而不是覆盖[但有可能是破坏性的更改]

  3. 为 'write-pom' 提供一个选项以包含任意依赖项,一个转换为 XML 的映射序列,包括 :scope,这些可选项的依赖项范围为 :provided。

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

1 个回答

+2
第一印象是倾向于#3。
遵循#3,我们可以实现类似于`:pom-plugins` Leiningen等效项,它会生成`<plugins><plugin>...</plugin></plugins>`块吗?

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