Size: a a a

Scala User Group

2020 May 19

λ

λoλegΥch in Scala User Group
что значит "смена compile на api/implementation"
источник

IK

Ivan Klass in Scala User Group
λoλegΥch
что значит "смена compile на api/implementation"
Ну в gradle есть понятие configuration, они могут плагинами создаваться или руками. По дефолту плагин Scala (наследник Java-плагина) создаёт "compile" configuration который подтягивает все транзитивные зависимости в компайл cp, но с плагином java-library есть разделение на API и implementation конфигурации, api- транзитивные, implementation - только при компиляции себя, в компиляции дочерних проектов их не видно если явно не продублировать, только в рантайме
источник

IK

Ivan Klass in Scala User Group
"Compile" усиленно депрекейтят
источник

IO это прежде всего ... in Scala User Group
Так получается у вас в консамере вашей либы, либа при компиляции, компилируется не полностью?
источник

IK

Ivan Klass in Scala User Group
Проблема существовала и раньше, но со сменой этих configuration стала появляться заметно чаще
источник

IK

Ivan Klass in Scala User Group
IO это прежде всего висп
Так получается у вас в консамере вашей либы, либа при компиляции, компилируется не полностью?
Consumer триггерит компиляцию зависимого проекта, а там хренакс, и не все классы иногда
источник

IO это прежде всего ... in Scala User Group
Ну, я бы попробовал все добавить в api и посмотреть, исправит ли это ситуацию
источник

IO это прежде всего ... in Scala User Group
Может неправильно поделили по этим группам
источник

IO это прежде всего ... in Scala User Group
Ну из того, что я нагуглил про api & implementation
источник

IO это прежде всего ... in Scala User Group
Это может быть причиной
источник

λ

λoλegΥch in Scala User Group
походу это типо compile/runtime скоупы из мавена, так что врядли
источник

IK

Ivan Klass in Scala User Group
IO это прежде всего висп
Может неправильно поделили по этим группам
Нет, дело в том, что runtimeClasspath и compileClasspath Gradle выдает одинаковый :(
источник

IK

Ivan Klass in Scala User Group
И по большей части везде именно api
источник

IK

Ivan Klass in Scala User Group
В тех проектах, которые переисполтзуются другими
источник

λ

λoλegΥch in Scala User Group
короче звучит как баг где-то в интеграции зинка с градлом
источник

IK

Ivan Klass in Scala User Group
Я тоже склонен так думать
источник

IK

Ivan Klass in Scala User Group
А ещё легче повторить если включить цинку force (без инкремента) - казалось бы, наоборот задачу упростили
источник

IO это прежде всего ... in Scala User Group
А можно ли у него дебаг мод подрубить и посмотреть, какие файлы он берет для компияции? И сравнить с теми, что ты изменил
источник

IK

Ivan Klass in Scala User Group
IO это прежде всего висп
А можно ли у него дебаг мод подрубить и посмотреть, какие файлы он берет для компияции? И сравнить с теми, что ты изменил
Спасибо, интересная мысль. В целом проблема повторяется и на билде с отключенным кэшем и рераном зависимых таск, но возможно, где-то забывает инвалидироваться файл анализа
источник

IK

Ivan Klass in Scala User Group
Вполне возможно, когда грейдл инвалидирует кеш результата таски, забывает где-то внутри про zinc. С разбиением на implementation/API инвалидация на стороне грейдла происходит по-другому/реже - и состояние zinc инвалидируется ещё реже
источник