Есть объект (java объект, созданный из схемы avro) с построителем. Объект имеет плоскую структуру и содержит около 200 полей.
Код выглядит так:
Object.newBuilder()
.setField1()
.setField2()
...
.setField200()
Компилятор scala в Idea компилирует это без каких-либо проблем. Когда я попытался запустить сборку maven - возникла проблема с компиляцией: StackOverflow
[ERROR] error: java.lang.StackOverflowError
[INFO] at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:666)
[INFO] at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5303)
[INFO] at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5330)
[INFO] at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5277)
[INFO] at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5281)
[INFO] at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5379)
[INFO] at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5387)
[INFO] at scala.tools.nsc.transform.Erasure$Eraser.adaptMember(Erasure.scala:612)
[INFO] at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:666)
[INFO] at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5303)
Scala версия: 2.11 Scala плагин maven: 3.3.1
В качестве обходного пути я разделить методы набора на группы (по 100 сеттеров в каждой цепочке)
val builder = Object.newBuilder()
builder.setField1()
.setField2()
...
.setField100()
builder.setField101()
...
.setField200()
Это удалось скомпилировать на моей локальной машине, но не удалось скомпилировать на сервере Jenkins. После того, как я разделил сеттеры на более мелкие группы (по 30 сеттеров в каждой группе), код также скомпилирован на сервере Jenkins.
Есть ли какой-либо параметр, который настраивает такое поведение в компиляторе scala?