4

我正在尝试使 SBT 与 IPFS 一起工作。我想将工件发布到 IPFS,然后在另一个项目中依赖它们。

在依赖项目中,我正在使用这个 SBT 解析器:

resolvers += "ipfs-iscpif" at "https://ipfs.iscpif.fr/ipns/QmXTLZWz1VQqv9nFKersuNnRgPmMEkiHuRnS8i1c8A9XSF/ivy"

除了在每次更新或 ;clean; 时下载依赖项外,一切正常。编译。常春藤缓存根本不起作用。

> ;clean;compile
[success] Total time: 0 s, completed 19 sept. 2016 13:19:41
[info] Updating {file:/tmp/test/}test...
[info] Resolving fr.iscpif.gridscale#http_2.11;1.88-SNAPSHOT ...
[warn] Unable to reparse fr.iscpif.gridscale#http_2.11;1.88-SNAPSHOT from ipfs-iscpif, using Mon Sep 19 13:19:43 CEST 2016
[info] Resolving fr.iscpif.gridscale#gridscale_2.11;1.88-SNAPSHOT ...
[warn] Unable to reparse fr.iscpif.gridscale#gridscale_2.11;1.88-SNAPSHOT from ipfs-iscpif, using Mon Sep 19 13:19:43 CEST 2016
[info] Resolving jline#jline;2.12.1 ...
[info] downloading https://ipfs.iscpif.fr/ipns/QmXTLZWz1VQqv9nFKersuNnRgPmMEkiHuRnS8i1c8A9XSF/ivy/fr/iscpif/gridscale/http_2.11/1.88-SNAPSHOT/http_2.11-1.88-20160919.103956-1.jar ...
[info]  [SUCCESSFUL ] fr.iscpif.gridscale#http_2.11;1.88-SNAPSHOT!http_2.11.jar (86ms)
[info] downloading https://ipfs.iscpif.fr/ipns/QmXTLZWz1VQqv9nFKersuNnRgPmMEkiHuRnS8i1c8A9XSF/ivy/fr/iscpif/gridscale/gridscale_2.11/1.88-SNAPSHOT/gridscale_2.11-1.88-20160919.103953-1.jar ...
[info]  [SUCCESSFUL ] fr.iscpif.gridscale#gridscale_2.11;1.88-SNAPSHOT!gridscale_2.11.jar (92ms)
[info] Done updating.
[success] Total time: 3 s, completed 19 sept. 2016 13:19:44
> ;clean;compile
[success] Total time: 0 s, completed 19 sept. 2016 13:19:45
[info] Updating {file:/tmp/test/}test...
[info] Resolving fr.iscpif.gridscale#http_2.11;1.88-SNAPSHOT ...
[warn] Unable to reparse fr.iscpif.gridscale#http_2.11;1.88-SNAPSHOT from ipfs-iscpif, using Mon Sep 19 13:19:45 CEST 2016
[info] Resolving fr.iscpif.gridscale#gridscale_2.11;1.88-SNAPSHOT ...
[warn] Unable to reparse fr.iscpif.gridscale#gridscale_2.11;1.88-SNAPSHOT from ipfs-iscpif, using Mon Sep 19 13:19:45 CEST 2016
[info] Resolving jline#jline;2.12.1 ...
[info] downloading https://ipfs.iscpif.fr/ipns/QmXTLZWz1VQqv9nFKersuNnRgPmMEkiHuRnS8i1c8A9XSF/ivy/fr/iscpif/gridscale/http_2.11/1.88-SNAPSHOT/http_2.11-1.88-20160919.103956-1.jar ...
[info]  [SUCCESSFUL ] fr.iscpif.gridscale#http_2.11;1.88-SNAPSHOT!http_2.11.jar (86ms)
[info] downloading https://ipfs.iscpif.fr/ipns/QmXTLZWz1VQqv9nFKersuNnRgPmMEkiHuRnS8i1c8A9XSF/ivy/fr/iscpif/gridscale/gridscale_2.11/1.88-SNAPSHOT/gridscale_2.11-1.88-20160919.103953-1.jar ...
[info]  [SUCCESSFUL ] fr.iscpif.gridscale#gridscale_2.11;1.88-SNAPSHOT!gridscale_2.11.jar (93ms)
[info] Done updating.
[success] Total time: 1 s, completed 19 sept. 2016 13:19:46

jar 每次都会被下载。经过长时间的调查,这似乎是由于 http 标头“Last-Modified”。IPFS 协议没有修改时间的概念,因此此标头由网关设置为当前日期。是否可以让 SBT 考虑在元数据中发布的发布时间(ivy.xml 用于 ivy 或 maven-metdata.xml 用于 maven)而不是这个 http 标头?

最好的问候, 罗曼

编辑 1: 基于 IPFS 的 SBT 存储库会非常好。但是我认为它不适用于 SBT 和 IPFS 的当前状态。SBT 依赖于 http 标头 Last-Modified,它设置为 IPNS 的当前日期,而 IPFS 则不存在。这意味着快照依赖项在每次更新时都会更新,或者永远不会更新。我在这个主题上花费了最后 24 小时,我认为目前没有将快照工件发布到 IPFS 的解决方案。

4

1 回答 1

1

刚发现这个问题。将信息添加到上次发布记录时的名称 API 应该不难,这样您就可以在 http 标头上获得该信息。也就是说,你找到https://github.com/magik6k/sbt-publish-ipfs了吗?

于 2018-02-21T10:18:50.890 回答