Search code examples
scalamacrossbtscala-macrosscala-macro-paradise

easiest way for users to include scalamacros paradise


I have just added some macro annotations to my library. In my library build, I include

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

to enable macro paradise.

In my users' projects that consume the macros, I know they need to include scalamacros somehow as well. Right now, in my example project, I do it the same as above. I was wondering if there was a briefer or less complicated way for the users to bring in the macros? For instance, is there some way I can leave off the cross CrossVersion.full? (As the user is probably not cross-compiling.)


Solution

  • That's as simple as it gets, really. Macro paradise versions are published against full Scala versions (like 2.11.8) rather than binary versions (like 2.11). cross CrossVersion.full ensures that the full scalaVersion from a build is appended to the artifact name, so assuming scalaVersion := "2.11.8":

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

    becomes

    addCompilerPlugin("org.scalamacros" % "paradise_2.11.8" % "2.1.0")
    

    It's simple enough to ask your users to include a single line in their build.