예기치 않은 (오직 나를 위해?) ScalaC 동작이 있습니다.
TL, DR은 코드베이스를 maven에서 bazel로 마이그레이션하는 동안 내가 본 문제점을 재현 한 것입니다. 이 마이그레이션의 주요 초점 중 하나는 각 클래스가 컴파일에 필요한 종속성을 최소화하여 빌드가 필요할 때만 트리거되도록하는 것입니다. >ClassUsingFoo
(사용) - ->Supplier
Supplier
경우 ClassIndirectlyNeedingFoo
휴식의 컴파일 클래스 경로에없는 내가 본 불행하게도 어떤scalac이 classpath에 전이 의존성을 필요로하는 이유
주어진 ClassIndirectlyNeedingFoo
(사용)이 있다는 것입니다. 자세한 내용은 여기 (https://github.com/ittaiz/scalac-troubleshooting)입니다.
누군가 scalac이 이와 같이 행동하는 이유를 알고 있다면 정말 고맙겠습니다.
감사합니다. 짧은 대답은 Why
가 anyone에 완전히 명확하지 않은 경우 그래서
BTW, 공급자는 ... 소스 또는 ClassIndirectlyNeedingFoo의 바이트 코드에 확인
왜 클래스 패스에 전이 의존성이 필요하지 않습니까? –
이것은 예상되는 동작입니다. 그러나 스칼라 센터는이 분야에서 개선을 시도 할 수 있습니다. https://github.com/scalacenter/advisoryboard/blob/master/proposals/009-improve-direct-dependency-experience.md 및 https://github.com/scalacenter/advisoryboard/blob/master/minutes/003을 참조하십시오. -X6- # -project-scp-009-build-use-only-direct-dependencies에 대한 사용자 경험 향상 –
@MichaelZajac'javac'은 그것없이 작동하고'Supplier'는 언급되지 않았기 때문에 내가 컴파일하는 것의 소스 코드 또는 바이트 코드에서. 런타임에 분명히 필요합니다. @SethTessue 스탁이 필요로하는 것을 미리 배울 수있는 방법에 대한 아이디어? 물론 소스/바이트 코드로는 충분하지 않습니다. 대략적인 개념으로 컴파일러 플러그인에 대한 생각. 감사! – Ittai