diff --git a/src/main/scala/sbt/internal/ProjectMatrix.scala b/src/main/scala/sbt/internal/ProjectMatrix.scala index 51d031869..439930793 100644 --- a/src/main/scala/sbt/internal/ProjectMatrix.scala +++ b/src/main/scala/sbt/internal/ProjectMatrix.scala @@ -160,6 +160,14 @@ object ProjectMatrix { override def toString: String = s"ProjectRow($autoScalaLibrary, $axisValues)" } + final class ProjectMatrixReferenceSyntax(m: ProjectMatrixReference) { + def %(conf: String): ProjectMatrix.MatrixClasspathDependency = + ProjectMatrix.MatrixClasspathDependency(m, Some(conf)) + + def %(conf: Configuration): ProjectMatrix.MatrixClasspathDependency = + ProjectMatrix.MatrixClasspathDependency(m, Some(conf.name)) + } + final case class MatrixClasspathDependency( matrix: ProjectMatrixReference, configuration: Option[String] diff --git a/src/main/scala/sbtprojectmatrix/ProjectMatrixPlugin.scala b/src/main/scala/sbtprojectmatrix/ProjectMatrixPlugin.scala index 88fc607a7..5dc6ed229 100644 --- a/src/main/scala/sbtprojectmatrix/ProjectMatrixPlugin.scala +++ b/src/main/scala/sbtprojectmatrix/ProjectMatrixPlugin.scala @@ -11,9 +11,14 @@ object ProjectMatrixPlugin extends AutoPlugin { object autoImport { def projectMatrix: ProjectMatrix = macro ProjectMatrix.projectMatrixMacroImpl - implicit def matrixClasspathDependency[T]( + implicit def matrixClasspathDependency[T]( m: T - )(implicit ev: T => ProjectMatrixReference): ProjectMatrix.MatrixClasspathDependency = - ProjectMatrix.MatrixClasspathDependency(m, None) + )(implicit ev: T => ProjectMatrixReference): ProjectMatrix.MatrixClasspathDependency = + ProjectMatrix.MatrixClasspathDependency(m, None) + + implicit def matrixReferenceSyntax[T]( + m: T + )(implicit ev: T => ProjectMatrixReference): ProjectMatrix.ProjectMatrixReferenceSyntax = + new ProjectMatrix.ProjectMatrixReferenceSyntax(m) } } diff --git a/src/sbt-test/projectMatrix/jvm-with-scoping/app/src/main/scala/Main.scala b/src/sbt-test/projectMatrix/jvm-with-scoping/app/src/main/scala/Main.scala new file mode 100644 index 000000000..510a46894 --- /dev/null +++ b/src/sbt-test/projectMatrix/jvm-with-scoping/app/src/main/scala/Main.scala @@ -0,0 +1,5 @@ +package a + +object Main extends App { + val core = Core +} diff --git a/src/sbt-test/projectMatrix/jvm-with-scoping/build.sbt b/src/sbt-test/projectMatrix/jvm-with-scoping/build.sbt new file mode 100644 index 000000000..07d3dbb3a --- /dev/null +++ b/src/sbt-test/projectMatrix/jvm-with-scoping/build.sbt @@ -0,0 +1,32 @@ +lazy val check = taskKey[Unit]("") + +lazy val root = (project in file(".")) + .aggregate(core.projectRefs ++ app.projectRefs: _*) + .settings( + ) + +lazy val app = (projectMatrix in file("app")) + .aggregate(core, intf) + .dependsOn(core % Compile, intf % "compile->compile;test->test") + .settings( + name := "app" + ) + .jvmPlatform(scalaVersions = Seq("2.12.8")) + +lazy val core = (projectMatrix in file("core")) + .settings( + check := { + assert(moduleName.value == "core", s"moduleName is ${moduleName.value}") + }, + ) + .jvmPlatform(scalaVersions = Seq("2.12.8", "2.11.12")) + +lazy val intf = (projectMatrix in file("intf")) + .settings( + check := { + assert(moduleName.value == "intf", s"moduleName is ${moduleName.value}") + }, + ) + .jvmPlatform(autoScalaLibrary = false) + +lazy val core212 = core.jvm("2.12.8") diff --git a/src/sbt-test/projectMatrix/jvm-with-scoping/core/src/main/scala/Core.scala b/src/sbt-test/projectMatrix/jvm-with-scoping/core/src/main/scala/Core.scala new file mode 100644 index 000000000..274e01225 --- /dev/null +++ b/src/sbt-test/projectMatrix/jvm-with-scoping/core/src/main/scala/Core.scala @@ -0,0 +1,6 @@ +package a + +class Core { +} + +object Core extends Core diff --git a/src/sbt-test/projectMatrix/jvm-with-scoping/project/plugins.sbt b/src/sbt-test/projectMatrix/jvm-with-scoping/project/plugins.sbt new file mode 100644 index 000000000..4e80bbafc --- /dev/null +++ b/src/sbt-test/projectMatrix/jvm-with-scoping/project/plugins.sbt @@ -0,0 +1,5 @@ +sys.props.get("plugin.version") match { + case Some(x) => addSbtPlugin("com.eed3si9n" % "sbt-projectmatrix" % x) + case _ => sys.error("""|The system property 'plugin.version' is not defined. + |Specify this property using the scriptedLaunchOpts -D.""".stripMargin) +} diff --git a/src/sbt-test/projectMatrix/jvm-with-scoping/test b/src/sbt-test/projectMatrix/jvm-with-scoping/test new file mode 100644 index 000000000..a0ccaf5e7 --- /dev/null +++ b/src/sbt-test/projectMatrix/jvm-with-scoping/test @@ -0,0 +1,6 @@ +> compile + +$ exists core/target/jvm-2.12/classes/a/Core.class +$ exists core/target/jvm-2.11/classes/a/Core.class + +> coreJVM2_12/check