답변:
sbt shell에서 (을 변경하지 않으려는 경우 build.sbt
) :
$ sbt
> set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation")
> compile
> exit
로 인해 in ThisBuild
, set
뿐만 아니라, 모든 하위 프로젝트로 설정을 적용합니다.
명령 행에서 위의 명령을 단일 명령으로 실행할 수도 있습니다.
sbt '; set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation") ; compile'
트릭은 ;
(세미콜론) 을 사용 하여 명령을 분리하고 '
(틱)을 사용하여 모든 ;
분리 된 명령을 sbt에 대한 단일 인수로 포함시킵니다 .
in Global
대신 in ThisBuild
하위 프로젝트에서도 동일하게 작동하지만 왜 후자가 선호됩니까? 아니면 짝수입니까?
시간이 흐름에 따라 새로운 솔루션이 등장합니다. 이제 전체 프로젝트를 다시 빌드하지 않고도 스칼라 컴파일러를 다시 실행할 수 있습니다.
ensime-sbt 플러그인 을 설치해야합니다 :
addSbtPlugin("org.ensime" % "sbt-ensime" % "1.0.0")
그런 다음 ensimeCompileOnly
작업을 사용하여 단일 파일을 컴파일 할 수 있습니다 . SBT는 작업 별 설정 구성을 허용하므로 해당 작업에 대해서만 변경할 수 있습니다.
set scalacOptions in (Compile, EnsimeKeys.ensimeCompileOnly) += "-deprecation"
ensimeCompileOnly src/main/scala/MyFile.scala
-deprecation
하는 것은 끔찍한 생각입니다. Ensime은 편집기에서 즉석 주석을 지원합니다. 게다가 Ensime 자체는 어떤 종류의 프로젝트 (대부분 매크로를 많이 사용하는 프로젝트)에 많은 문제가 있습니다.