Я пытаюсь сделать SBT работу с IPFS. Я хочу публиковать артефакты в IPFS, а затем зависеть от них в другом проекте.IPFS resolver for sbt
В зависимости проекта я использую этот SBT распознаватель:
resolvers += "ipfs-iscpif" at "https://ipfs.iscpif.fr/ipns/QmXTLZWz1VQqv9nFKersuNnRgPmMEkiHuRnS8i1c8A9XSF/ivy"
Все работает за исключением того, что зависимости загружаются на каждом обновлении или, чистые; компиляции. Ключ плюща не работает вообще.
> ;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
Банку загружают каждый раз. После длительного расследования, похоже, это связано с заголовком http «Last-Modified». Протокол IPFS не имеет понятия времени модификации, поэтому этот заголовок устанавливается шлюзом на текущую дату. Можно ли заставить SBT рассмотреть время публикации, опубликованное в метаданных (ivy.xml для ivy или maven-metdata.xml для maven) вместо этого заголовка http?
наилучшими пожеланиями, Ромен
Edit 1: на основе ОПЗ SBT репо будет очень хорошо. Однако я думаю, что он не может работать с текущим состоянием SBT и IPFS. SBT полагается на заголовок http Last-Modified, который установлен на текущую дату IPNS и отсутствует для IPFS. Это означает, что либо зависимость моментального снимка обновляется в каждом обновлении, либо никогда не обновляется. Последние 24 часа я посвятил этой теме, и я думаю, что в настоящее время нет решения опубликовать артефакт моментальных снимков для IPFS.