SBT 1.3.8 для автоматического обновления версий SNAPSHOT даже в режиме инкрементной компиляции - PullRequest
4 голосов
/ 17 марта 2020

Начиная с SBT 1.3.0, Coursier является механизмом распознавания по умолчанию, поэтому мы удалили плагин Coursier SBT из зависимостей.

Во времена плагинов Coursier мы использовали COURSIER_TTL="5 min", чтобы контролировать, как часто * Версия 1004 * должна выбираться автоматически, даже когда sbt ~test:compile используется во время разработки.

Для проекта зависимости SNAPSHOT, здесь вывод:

sbt:hub> show isSnapshot
[info] common / isSnapshot
[info]  true
[info] isSnapshot
[info]  true
sbt:hub> show packagedArtifacts
[info] Wrote C:\Users\Ehnalis\Projects\hub\common\target\scala-2.12\common_2.12-0.5.0-SN
APSHOT.pom
[info] Wrote C:\Users\Ehnalis\Projects\hub\target\scala-2.12\hub_2.12-0.5.0-SNAPSHOT.pom

[info] common / packagedArtifacts
[info]  Map(Artifact(common, jar, jar, None, Vector(compile), None, Map(), None, false)
-> C:\Users\Ehnalis\Projects\hub\common\target\scala-2.12\common_2.12-0.5.0-SNAPSHOT.jar
, Artifact(common, src, jar, Some(tests-sources), Vector(test), None, Map(), None, false
) -> C:\Users\Ehnalis\Projects\hub\common\target\scala-2.12\common_2.12-0.5.0-SNAPSHOT-t
ests-sources.jar, Artifact(common, jar, jar, Some(tests), Vector(test), None, Map(), Non
e, false) -> C:\Users\Ehnalis\Projects\hub\common\target\scala-2.12\common_2.12-0.5.0-SN
APSHOT-tests.jar, Artifact(common, src, jar, Some(sources), Vector(compile), None, Map()
, None, false) -> C:\Users\Ehnalis\Projects\hub\common\target\scala-2.12\common_2.12-0.5
.0-SNAPSHOT-sources.jar, Artifact(common, pom, pom, None, Vector(pom), None, Map(), None
, false) -> C:\Users\Ehnalis\Projects\hub\common\target\scala-2.12\common_2.12-0.5.0-SNA
PSHOT.pom)
[info] packagedArtifacts
[info]  Map(Artifact(hub, src, jar, Some(sources), Vector(compile), None, Map(), None, f
alse) -> C:\Users\Ehnalis\Projects\hub\target\scala-2.12\hub_2.12-0.5.0-SNAPSHOT-sources
.jar, Artifact(hub, jar, jar, Some(tests), Vector(test), None, Map(), None, false) -> C:
\Users\Ehnalis\Projects\hub\target\scala-2.12\hub_2.12-0.5.0-SNAPSHOT-tests.jar, Artifac
t(hub, jar, jar, None, Vector(compile), None, Map(), None, false) -> C:\Users\Ehnalis\Pr
ojects\hub\target\scala-2.12\hub_2.12-0.5.0-SNAPSHOT.jar, Artifact(hub, src, jar, Some(t
ests-sources), Vector(test), None, Map(), None, false) -> C:\Users\Ehnalis\Projects\hub\
target\scala-2.12\hub_2.12-0.5.0-SNAPSHOT-tests-sources.jar, Artifact(hub, pom, pom, Non
e, Vector(pom), None, Map(), None, false) -> C:\Users\Ehnalis\Projects\hub\target\scala-
2.12\hub_2.12-0.5.0-SNAPSHOT.pom)

Существует файл CHECKED в hub\common_2.12\0.5.0-SNAPSHOT в локальном каталоге .coursier, который не будет обновляться при изменении кода в другом проекте, который зависит от hub, при использовании ~test:compile.

COURSIER_TTL не действует в 1.3.8. Есть ли другой способ настроить SBT для частой проверки новых SNAPSHOT версий?

1 Ответ

3 голосов
/ 20 марта 2020

Попробуйте установить forceUpdatePeriod длительность в build.sbt

forceUpdatePeriod := Some(5 minutes)

, которая управляет

Duration after which to force a full update to occur

, поскольку согласно документы работает update должен исправить проблемы с SNAPSHOT

Запустить обновление явно. Обычно это решает проблемы с устаревшими SNAPSHOT или локально опубликованными артефактами.


РЕДАКТИРОВАТЬ: Попробуйте обновить до sbt 1.3.9 , что

Обновления в lm-coursier-shaded 2.0.0-RC6-2

, где 2.0.0-RC6-2 предоставляет конфигурацию TTL

Теперь можно настроить TTL, уровень детализации, контрольные суммы и политики кеширования через CoursierConfiguration, доступный через csrConfiguration в sbt.

Следовательно, попробуйте установить в build.sbt

import scala.concurrent.duration.DurationInt
import lmcoursier.definitions.CachePolicy

csrConfiguration := csrConfiguration.value
  .withTtl(1.minute)
  .withCachePolicies(Vector(CachePolicy.LocalOnly))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...