Инструмент сборки Mill, как использовать ʻevicted`
Я хочу бежать evicted
в моем Мельничном проекте.
С SBT это можно сделать вsbt-console
, с помощью:
sbt>evicted
Это возвращает список предупреждений о конфликтах версий:
[warn] Found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[warn] * com.typesafe:ssl-config-core_2.13:0.3.8 is selected over 0.4.0
[warn] +- com.typesafe.play:play-ws-standalone_2.13:2.0.6 (depends on 0.3.8)
[warn] +- com.typesafe.play:play_2.13:2.7.3 () (depends on 0.3.8)
[warn] +- com.typesafe.akka:akka-stream_2.13:2.5.23 () (depends on 0.4.0)
....
Как это делается с Миллем?
Я попробовал mill-console
, команды нет (mill resolve _
), а также Google не смогли помочь.
1 ответ
Я предполагаю, что вы ищете возможные проблемы / предупреждения пути к классам, которые являются результатом разных версий одних и тех же зависимостей, втянутых транзитивными зависимостями.
В мельнице вы можете использовать ivyDepsTree
target для отображения дерева со всеми транзитивными зависимостями плюща. Это дерево также включает сведения о корректировках версий. Эти строки будут напечатаны разными цветами. По умолчанию оранжевый цвет соответствует изменениям версии микро / патча, красный - изменениям второстепенной версии.
Давайте посмотрим на следующий отрывок из случайного Java-проекта:
$ mill __.ivyDepsTree
...
[416/426] <redacted>.test.ivyDepsTree
├─ com.lihaoyi:mill-contrib-testng:0.5.1-14-ef3708
│ ├─ org.scala-sbt:test-interface:1.0
│ └─ org.testng:testng:6.11 -> 6.14.2 (possible incompatibility)
│ ├─ com.beust:jcommander:1.72
│ └─ org.apache-extras.beanshell:bsh:2.0b6
├─ org.testng:testng:6.14.2
│ ├─ com.beust:jcommander:1.72
│ └─ org.apache-extras.beanshell:bsh:2.0b6
├─ de.tototec:de.tobiasroeser.lambdatest:0.7.0
├─ org.slf4j:slf4j-api:1.7.25
├─ ch.qos.logback:logback-classic:1.2.3
│ ├─ ch.qos.logback:logback-core:1.2.3
│ └─ org.slf4j:slf4j-api:1.7.25
├─ org.aspectj:aspectjrt:1.8.13
├─ org.fedorahosted.tennera:jgettext:0.15
│ ├─ antlr:antlr:2.7.7
│ └─ org.slf4j:slf4j-api:1.7.5 -> 1.7.25
├─ org.antlr:com.springsource.antlr:2.7.7
...
Вы можете увидеть некоторые изменения из-за конфликтующих версий: org.slf4j:slf4j-api:1.7.5 -> 1.7.25
(обновление до микро версии) и org.testng:testng:6.11 -> 6.14.2 (possible incompatibility)
(обновление младшей версии).
Кроме того, вы можете направить вывод в grep
для фильтрации вывода, например mill __.ivyDepsTree | grep "incompatibility"
.
И это похоже на полезную мельницу, эквивалентную sbt evicted
.
$ mill __.ivyDepsTree | grep "incompatibility"
...
[416/426] <redacted>.test.ivyDepsTree
│ └─ org.testng:testng:6.11 -> 6.14.2 (possible incompatibility)
│ ├─ org.hibernate:com.springsource.org.hibernate:3.2.6.ga -> 3.3.2.GA (possible incompatibility)
│ ├─ org.jboss.javassist:com.springsource.javassist:3.3.0.ga -> 3.9.0.GA (possible incompatibility)
│ └─ org.objenesis:objenesis:1.2 -> 2.6 (possible incompatibility)
│ │ └─ org.objenesis:objenesis:1.2 -> 2.6 (possible incompatibility)
│ │ │ └─ org.objenesis:objenesis:1.2 -> 2.6 (possible incompatibility)
│ │ │ └─ org.objenesis:objenesis:1.2 -> 2.6 (possible incompatibility)
│ │ └─ org.testng:testng:6.4 -> 6.14.2 (possible incompatibility)
│ └─ org.testng:testng:6.4 -> 6.14.2 (possible incompatibility)
│ │ └─ org.objenesis:objenesis:1.2 -> 2.6 (possible incompatibility)
│ └─ org.objenesis:objenesis:1.2 -> 2.6 (possible incompatibility)