2017-05-03 18 views
4

SBT 플러그인을 쓰고 있습니다. Circe JSON 라이브러리를 사용하고 싶습니다만, Scala 2.10에서 Macro Paradise 컴파일러 플러그인이 필요합니다.SBT Plugin : 컴파일러 플러그인을 다운 스트림으로 전파되지 않는 종속성으로 추가하는 방법은 무엇입니까?

보통 컴파일러 플러그인을 build.sbt에, SBT 플러그인을 project/plugins.sbt에 추가합니다.

이제 SBT 플러그인을 만들 때 다른 플러그인은 종속성이되므로 build.sbt에 넣고 SBT 플러그인을 사용하는 프로젝트에 전파됩니다.

addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full) 

가 파라다이스 컴파일러 플러그인을 다운 스트림 프로젝트에 전파 않습니다

나는 내 SBT 플러그인의 build.sbt에 다음 코드를 넣을 때?

답변

5

컴파일러 플러그인은 기본적으로 전파되지 않지만 실제로 다운 스트림 사용자는 종속성으로 필요하며이 요구 사항을 우회 할 수있는 방법은 없습니다.

이유는 간단합니다. 코드가 다른 컴파일 단위로 컴파일되므로 최종 코드베이스에서 찾을 수있는 컴파일러 플러그인에 의존하는 기능이있는 경우에는 명시 적으로 종속성을 추가하려면이 플러그인에 유의하십시오.

호프가 도움이 되었으면 좋겠다. 예를 들어 정말로 인기있는 모노 클레이 라이브러리 here을 예로 들겠습니다. 주석은 예를 들어 낙원없이 확장되지 않으므로 최종 사용자가 필요로하는 모든 문제입니다.

당신이 그런 @Lenses 같은 매크로 주석을 사용하려면

견적은 또한 포함해야합니다

addCompilerPlugin("org.scalamacros" %% "paradise" % "2.1.0" cross CrossVersion.full)