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

欢迎!请参阅 关于 页面,了解更多关于此网站的信息。

+7
Clojure CLI

由于 Clojars 现在要求添加许可证,需要上传到 Clojars 的项目需要在他们的 jar 文件的 pom 文件中添加许可证块。使用 build.tools 可以创建 pom.xml,手动编辑它以包含许可证部分,然后使用该 pom 创建 jar。但这是手动操作。

是否有计划为 write-pom(和 gen-pom)添加一个选项,以允许程序化插入许可证?

我认为这是一个好主意。write-pom 已经有了添加版本控制信息的选择。对于许多项目来说,pom.xml 仅用作模板是 a) 重复 b) 增加了复杂性,并且 c) 对于初学 Clojure 或自动化工具的新手可能会被误解,除非将其放在一个重复的子目录(如模板)下。
据我所知,这是这个项目的初衷之一: https://github.com/pmonks/tools-pom

2 个回答

+1

被选中
 
最佳回答

tools.build v0.9.6 现在包含了一个额外的 :pom-data 属性,可以用来在生成的 pom 中提供许可(以及其他 pom 数据)的 hiccup 风格。

文档: https://clojure.github.io/tools.build/clojure.tools.build.api.html#var-write-pom

示例

(b/write-pom
  ...
  :pom-data 
    [[:licenses
      [:license
        [:name "Eclipse Public License 1.0"]
        [:url "https://opensource.org/license/epl-1-0/";]
        [:distribution "repo"]]]]) 
我已经将我的 OSS 项目切换到了使用这个功能,并且它运行得很好!谢谢!

我还更新了 deps-new,使其生成的所有项目也都使用这个功能,而不是一个“模板”pom.xml 文件。这样更好!
+1

编辑了

write-pom 已经可以使用“模板”pom.xml 文件来生成最终的、上传的 pom.xml 文件。这就是 deps-newclj-new 生成的内容——查看该模板文件的源代码

https://github.com/seancorfield/deps-new/blob/develop/resources/org/corfield/new/lib/root/template/pom.xml

这就是我在我的 FOSS 项目(如 next.jdbc)中处理此事的方式

https://github.com/seancorfield/next-jdbc/blob/develop/template/pom.xml

以及

https://github.com/seancorfield/next-jdbc/blob/develop/build.clj#L45

我不同意tools.build添加一个:license选项——还有很多其他的字段也应该在上传的pom.xml文件中,而write-pom也忽略了这些,:src-pom选项让您提供所有这些字段。

我认为更多的文档可以推荐使用一个“模板”pom.xml文件(我将更新clojure-doc.org的tools.build说明手册来反映这一点)。

clojure-doc.org问题:[链接](https://github.com/clojure-doc/clojure-doc.github.io/issues/59)

deps-new问题(将"模板"pom.xml从根目录移至模板文件夹):[链接](https://github.com/seancorfield/deps-new/issues/45)
当我说“……然后使用那个pom创建一个jar”时,我指的是模板。

(我已经很多年没有手动运行`jar cf`了,并打算继续保持这种状态)

我想我只需要一个小型的pom.xml,而不是使用`-Spom`生成整个文件,因为文件中有大部分会被替换。

我仍然更喜欢对构建pom的编程访问,但我可以理解使用模板的论点,尽管我并不赞同。
我认为在write-pom文档字符串和tools.build指南中添加有关这一点(特别是许可证)的注释也会很有帮助。
by
编辑了 by
如果你使用 b/write-pom 以编程方式,那么不得不依赖于模板,这相当繁琐。这还要求每个部署在 Clojars 上的库都这样做。

t.build 的增补似乎为了支持这一点也不多(我们的分支是这样做的:[链接]:https://github.com/clojure/tools.build/commit/df75a6c3f9d2297f27da572836d004fd66b8d894)。
by
这似乎是一个"滑坡":起初我们得到了 :scm 作为哈希表,然后也许可以添加 :licenses 作为哈希表的向量,然后在其他人们认为重要的 XML 片段添加一些其他选项... 这将使选项成为一个完整的 DSL!

必须有一个更好的方法。坦白说,我认为添加 :scm 是一个错误。

怎么办?用一个内联模板作为单个 hiccup-like 结构?只有一项选项,它是数据,它可以支持人们想要生成 XML 文件中的任何部分...
...