Help understanding build.sbt format

Can someone help me understand the magical operators in the build.sbt file?
I have the following line

addCompilerPlugin("org.scala-lang.plugins" %% "scala-continuations-plugin" % "1.0.3")

which results in the following warnings from sbt.

[warn] 	module not found: org.scala-lang.plugins#scala-continuations-plugin_2.12;1.0.3
[warn] ==== local: tried
[warn]   /Users/jimka/.ivy2/local/org.scala-lang.plugins/scala-continuations-plugin_2.12/1.0.3/ivys/ivy.xml
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/org/scala-lang/plugins/scala-continuations-plugin_2.12/1.0.3/scala-continuations-plugin_2.12-1.0.3.pom
[warn] ==== local-preloaded-ivy: tried
[warn]   /Users/jimka/.sbt/preloaded/org.scala-lang.plugins/scala-continuations-plugin_2.12/1.0.3/ivys/ivy.xml
[warn] ==== local-preloaded: tried
[warn]   file:////Users/jimka/.sbt/preloaded/org/scala-lang/plugins/scala-continuations-plugin_2.12/1.0.3/scala-continuations-plugin_2.12-1.0.3.pom
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn] 	::          UNRESOLVED DEPENDENCIES         ::
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn] 	:: org.scala-lang.plugins#scala-continuations-plugin_2.12;1.0.3: not found
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn]
[warn] 	Note: Unresolved dependencies path:
[warn] 		org.scala-lang.plugins:scala-continuations-plugin_2.12:1.0.3 (/Users/jimka/sw/common-lisp/regular-type-expression/cl-robdd/src/cl-robdd-scala/build.sbt#L20-21)
[warn] 		  +- default:cl-robdd-scala_2.12:0.1

However, according to theinstructions elsewhere I tried to change the line to already include the version number.

addCompilerPlugin("org.scala-lang.plugins" %% "scala-continuations-plugin_2.12.2" % "1.0.3")

which results in the following warning output from sbt, (trying to find 2.12.2_2.12;1.0.3).

[warn] 	module not found: org.scala-lang.plugins#scala-continuations-plugin_2.12.2_2.12;1.0.3
[warn] ==== local: tried
[warn]   /Users/jimka/.ivy2/local/org.scala-lang.plugins/scala-continuations-plugin_2.12.2_2.12/1.0.3/ivys/ivy.xml
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/org/scala-lang/plugins/scala-continuations-plugin_2.12.2_2.12/1.0.3/scala-continuations-plugin_2.12.2_2.12-1.0.3.pom
[warn] ==== local-preloaded-ivy: tried
[warn]   /Users/jimka/.sbt/preloaded/org.scala-lang.plugins/scala-continuations-plugin_2.12.2_2.12/1.0.3/ivys/ivy.xml
[warn] ==== local-preloaded: tried
[warn]   file:////Users/jimka/.sbt/preloaded/org/scala-lang/plugins/scala-continuations-plugin_2.12.2_2.12/1.0.3/scala-continuations-plugin_2.12.2_2.12-1.0.3.pom
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn] 	::          UNRESOLVED DEPENDENCIES         ::
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn] 	:: org.scala-lang.plugins#scala-continuations-plugin_2.12.2_2.12;1.0.3: not found
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn]
[warn] 	Note: Unresolved dependencies path:
[warn] 		org.scala-lang.plugins:scala-continuations-plugin_2.12.2_2.12:1.0.3 (/Users/jimka/sw/common-lisp/regular-type-expression/cl-robdd/src/cl-robdd-scala/build.sbt#L20-21)
[warn] 		  +- default:cl-robdd-scala_2.12:0.1

What does the ; mean in the warning message: org.scala-lang.plugins#scala-continuations-plugin_2.12.2_2.12;1.0.3: not found ? does it mean it is trying to find a file named exactly scala-continuations-plugin_2.12.2_2.12;1.0.3 in the central repository? Or is the ;1.0.3 just some meta data that does not effect the file name being searched for.

How is the file name determined?

When you use %% the SBT adds the Scala version automatically, that’s why you see the extra “_2.12”.

In most of the cases is best to let SBT to sync the Scala version throught the dependencies (if you mix Scala versions it can get very messy)

But anyway, in case you want to be explicit about certain version you can use % instead of %%

As an aditional note, this trick of adding the Scala version is because Scala warranties binary compatibility only at Scala version level, requiring the trick to add not only .jar to the libraries, but also _2.12.jar, or _2.13.jar or whatever version of Scala you want to use … think as if in Scala the libraries are not only .jar like in Java but multiversioned libraries like the _2.11.jar and the _2.12.jar, 2.13_jar,_3.0_jar`, etc.