[scala] Scala 프로젝트에서 sbt vs maven 사용의 장단점

스칼라에 가장 적합한 빌드 도구는 무엇입니까? 그들 각각의 장단점은 무엇입니까? 프로젝트에서 어떤 것을 사용할지 어떻게 결정합니까?



답변

우리는 Maven을 사용하여 CI 서버와 잘 통합되어 있기 때문에 직장에서 Scala 프로젝트를 구축하고 있습니다. 물론 빌드를 시작하기 위해 쉘 스크립트를 실행할 수도 있지만, Maven에서 CI로 가고 싶은 다른 많은 정보가 있습니다. 그것이 Scala 프로젝트에 Maven을 사용한다고 생각할 수있는 유일한 이유입니다.

그렇지 않으면 SBT를 사용하십시오. 동일한 종속성 (실제로 maven, IMHO의 가장 중요한 부분)에 액세스 할 수 있습니다. 또한 증분 컴파일을 가져옵니다. 프로젝트 내부에서 쉘을 시작하는 기능도 훌륭합니다.

ScalaMock은 SBT에서만 작동하며 Java 모의 라이브러리가 아닌 SBT를 사용하고 싶을 것입니다. 또한 빌드 파일에 전체 스칼라 코드를 작성할 수 있으므로 SBT를 확장하는 것이 훨씬 쉬우므로 모조를 작성하는 모든 리가 마롤을 수행 할 필요가 없습니다.

즉, CI 서버와의 긴밀한 통합이 필요하지 않은 경우 SBT 만 사용하십시오.


답변

문제는 단지 많은 의견을 생성 할 위험이있다. 요구 사항 목록이나 환경, 이전 지식 등에 대한 설명을 명확하게 작성하는 것이 좋습니다.

이 스칼라 메일 링리스트 쓰레드 에는 더 많은 의견 있습니다.

내 2c는 : 특정 요구 사항이 없으면 sbt와 함께하십시오.

  • 간단한 프로젝트의 경우 완전히 힘들 수 있습니다 (종속성이있을 때까지 빌드 파일이 필요하지 않습니다)
  • 스칼라 오픈 소스 프로젝트에서 일반적으로 사용됩니다. 다른 사람들의 프로젝트를 엿봄으로써 구성에 대해 쉽게 배울 수 있습니다. 또한 많은 프로젝트는 sbt를 사용한다고 가정 하고이를 프로젝트에 대한 종속성으로 추가하기위한 기성품 복사 + 붙여 넣기 명령 을 제공합니다.
  • IntelliJ IDEA를 사용하면 완전히 통합 될 수 있습니다. 당신은 할 수 IDEA 사용 SBT가 신속에 SBT를 사용할 수 있습니다 반대 지속적으로 프로젝트를 컴파일, 그리고 그 반대를 IDEA 프로젝트를 생성합니다 . 마지막은 부 버전에서 부 버전으로 충돌하는 다른 라이브러리에 따라 ‘스냅 샷’주기에있는 경우 매우 유용합니다. 프로젝트를 닫고 빌드 파일에서 버전을 업데이트 한 다음 다시 실행하십시오. gen-idea작업을 수행하고 프로젝트를 다시 엽니 다 : 업데이트 완료.
  • 당신이 필요합니다 대부분의 작업 (와 준비가되어 compile, test, run, doc, publish-local, console) – (가) console가장 좋은 기능 중 하나입니다.
  • 어떤 사람들은 의존성이 GitHub에서 직접 가져온 소스 리포지토리가 될 수있는 기능을 강조합니다. 나는 이것을 사용하지 않았으므로 여기에 주석을 달 수 없다.

어떤 사람들은 의존성 관리에 Ivy를 사용하기 때문에 sbt를 싫어합니다 (장단점에 대해서는 언급 할 수 없지만 대부분 비 이슈입니다). XML 대신 스칼라 DSL. 어떤 사람들은 sbt의 형식이 v0.7에서 v0.10으로 변경된 것에 실망했지만 분명히 처음부터 시작해도 마이그레이션은 영향을 미치지 않습니다.


답변