sbt, the interactive build tool
Go to file
Eugene Yokota 47ef80eadf Subsume platform cross building
Problem
In sbt 1, platform cross building is implemented using in the user-land
using `%%%` operator, which clevery handles both Scala cross building
and appending platform suffix like sjs1.
However, in general symbolic `%%%` is confusing, and hard to explain.

Solution
In sbt 2, we should subsume the idea of platform cross building,
so `%%` can act as the current `%%%` operator.
This adds a new field called `platformOpt` to `ModuleID`, which
by default will be set to `None`.
`ScalaModuleInfo` will also add a new field called `platform`,
which can be set to `None`, `Some(sjs1)` etc.
As part of module transformation (like adding `_2.13`), the library
management engine can transform `ModuleID` to `sjs1` etc.
`("com.github.scopt" %% "scopt" % "4.1.0").platform(jvm)` will
explicitly use the JVM version of dependency (equivalent to today's `%%`).
2023-03-12 03:25:29 -04:00
.github Add Scala 2.13 support 2021-01-03 00:59:38 -05:00
bin fixpreloaded.sh 2019-05-09 23:54:01 -04:00
core Subsume platform cross building 2023-03-12 03:25:29 -04:00
ivy/src Subsume platform cross building 2023-03-12 03:25:29 -04:00
notes Library management API 2017-07-15 11:17:23 -04:00
project Use scala-xml_3 2023-01-19 04:54:53 -05:00
scripted-test/src/sbt-test/lmScriptedTest adding multi-project test 2018-10-28 08:54:26 +00:00
.gitignore fix 2018-10-16 12:35:23 +01:00
.java-version Cross publish to Scala 2.12 2017-01-07 00:49:45 -05:00
.scalafmt.conf Scala 3 2022-01-30 02:55:17 -05:00
README.md rename to DependencyResolutionInterface 2017-07-15 11:17:23 -04:00
build.sbt Downgrade scala-xml to _2.13 on Scala 3 2022-08-11 23:40:40 -04:00
sbt-allsources.sh sbt-contraband 0.3.0-M4 2017-03-17 23:03:37 -04:00

README.md

librarymanagement module for sbt

scala> import java.io.File
import java.io.File

scala> import sbt.librarymanagement._, syntax._
import sbt.librarymanagement._
import syntax._

scala> val log = sbt.util.LogExchange.logger("test")
log: sbt.internal.util.ManagedLogger = sbt.internal.util.ManagedLogger@c439b0f

scala> val lm = {
         import sbt.librarymanagement.ivy._
         val ivyConfig = InlineIvyConfiguration().withLog(log)
         IvyDependencyResolution(ivyConfig)
       }
lm: sbt.librarymanagement.DependencyResolution = sbt.librarymanagement.DependencyResolution@6a9b40f8

scala> val module = "commons-io" % "commons-io" % "2.5"
module: sbt.librarymanagement.ModuleID = commons-io:commons-io:2.5

scala> lm.retrieve(module, scalaModuleInfo = None, new File("target"), log)
res0: Either[sbt.librarymanagement.UnresolvedWarning,Vector[java.io.File]] = Right(Vector(target/jars/commons-io/commons-io/commons-io-2.5.jar, target/jars/commons-io/commons-io/commons-io-2.5.jar, target/jars/commons-io/commons-io/commons-io-2.5.jar))