diff --git a/librarymanagement/src/main/datatype/librarymanagement.json b/librarymanagement/src/main/datatype/librarymanagement.json index 994dba15e..d6e3aff88 100644 --- a/librarymanagement/src/main/datatype/librarymanagement.json +++ b/librarymanagement/src/main/datatype/librarymanagement.json @@ -420,7 +420,7 @@ ] }, { - "name": "IMavenRepository", + "name": "MavenRepository", "namespace": "sbt.librarymanagement", "target": "Scala", "type": "interface", @@ -431,10 +431,11 @@ ], "types": [ { - "name": "MavenRepository", + "name": "MavenRepo", "namespace": "sbt.librarymanagement", "target": "Scala", "type": "record", + "extra": "def isCache: Boolean = false", "toString": "s\"$name: $root\"" }, { @@ -449,11 +450,16 @@ "fields": [ { "name": "rootFile", "type": "java.io.File" } ], - "extra": "def this(name: String, rootFile: java.io.File) = this(name, rootFile.toURI.toURL.toString, true, rootFile)", + "extra": [ + "def this(name: String, rootFile: java.io.File) = this(name, rootFile.toURI.toURL.toString, true, rootFile)", + "def isCache: Boolean = true" + ], "toString": "s\"cache:$name: ${rootFile.getAbsolutePath}\"", "extraCompanion": "def apply(name: String, rootFile: java.io.File): MavenCache = new MavenCache(name, rootFile)" } - ] + ], + "extra": "def isCache: Boolean", + "parentsCompanion": "sbt.librarymanagement.MavenRepositoryFunctions" }, { "name": "PatternsBasedRepository", diff --git a/librarymanagement/src/main/scala/sbt/internal/librarymanagement/impl/DependencyBuilders.scala b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/impl/DependencyBuilders.scala index 6260f5ad6..c5e117c72 100755 --- a/librarymanagement/src/main/scala/sbt/internal/librarymanagement/impl/DependencyBuilders.scala +++ b/librarymanagement/src/main/scala/sbt/internal/librarymanagement/impl/DependencyBuilders.scala @@ -60,6 +60,6 @@ final class RepositoryName private[sbt] (name: String) { def at(location: String) = { nonEmpty(location, "Repository location") - new MavenRepository(name, location) + MavenRepository(name, location) } } diff --git a/librarymanagement/src/main/scala/sbt/librarymanagement/Resolver.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/Resolver.scala index 75be6d228..9e73c1d7b 100644 --- a/librarymanagement/src/main/scala/sbt/librarymanagement/Resolver.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/Resolver.scala @@ -26,6 +26,11 @@ final class RawRepository(val resolver: DependencyResolver) extends Resolver(res } } +abstract class MavenRepositoryFunctions { + def apply(name: String, root: String, localIfFile: Boolean = true): MavenRepository = + new MavenRepo(name, root, localIfFile) +} + abstract class PatternsFunctions { implicit def defaultPatterns: Patterns = Resolver.defaultPatterns @@ -43,9 +48,9 @@ private[sbt] class FakeRepository(resolver: DependencyResolver) extends xsbti.Re trait ResolversSyntax { import Resolver._ - val DefaultMavenRepository = new MavenRepository("public", centralRepositoryRoot(useSecureResolvers)) - val JavaNet2Repository = new MavenRepository(JavaNet2RepositoryName, JavaNet2RepositoryRoot) - val JCenterRepository = new MavenRepository(JCenterRepositoryName, JCenterRepositoryRoot) + val DefaultMavenRepository = MavenRepository("public", centralRepositoryRoot(useSecureResolvers)) + val JavaNet2Repository = MavenRepository(JavaNet2RepositoryName, JavaNet2RepositoryRoot) + val JCenterRepository = MavenRepository(JCenterRepositoryName, JCenterRepositoryRoot) } abstract class ResolverFunctions { @@ -77,15 +82,15 @@ abstract class ResolverFunctions { private[sbt] val ScalaToolsSnapshotsName = "Sonatype OSS Snapshots" private[sbt] val ScalaToolsReleasesRoot = SonatypeRepositoryRoot + "/releases" private[sbt] val ScalaToolsSnapshotsRoot = SonatypeRepositoryRoot + "/snapshots" - private[sbt] val ScalaToolsReleases = new MavenRepository(ScalaToolsReleasesName, ScalaToolsReleasesRoot) - private[sbt] val ScalaToolsSnapshots = new MavenRepository(ScalaToolsSnapshotsName, ScalaToolsSnapshotsRoot) + private[sbt] val ScalaToolsReleases = MavenRepository(ScalaToolsReleasesName, ScalaToolsReleasesRoot) + private[sbt] val ScalaToolsSnapshots = MavenRepository(ScalaToolsSnapshotsName, ScalaToolsSnapshotsRoot) - def typesafeRepo(status: String) = new MavenRepository("typesafe-" + status, TypesafeRepositoryRoot + "/" + status) + def typesafeRepo(status: String) = MavenRepository("typesafe-" + status, TypesafeRepositoryRoot + "/" + status) def typesafeIvyRepo(status: String) = url("typesafe-ivy-" + status, new URL(TypesafeRepositoryRoot + "/ivy-" + status + "/"))(ivyStylePatterns) def sbtIvyRepo(status: String) = url(s"sbt-ivy-$status", new URL(s"$SbtRepositoryRoot/ivy-$status/"))(ivyStylePatterns) def sbtPluginRepo(status: String) = url("sbt-plugin-" + status, new URL(SbtRepositoryRoot + "/sbt-plugin-" + status + "/"))(ivyStylePatterns) - def sonatypeRepo(status: String) = new MavenRepository("sonatype-" + status, SonatypeRepositoryRoot + "/" + status) - def bintrayRepo(owner: String, repo: String) = new MavenRepository(s"bintray-$owner-$repo", s"https://dl.bintray.com/$owner/$repo/") + def sonatypeRepo(status: String) = MavenRepository("sonatype-" + status, SonatypeRepositoryRoot + "/" + status) + def bintrayRepo(owner: String, repo: String) = MavenRepository(s"bintray-$owner-$repo", s"https://dl.bintray.com/$owner/$repo/") def bintrayIvyRepo(owner: String, repo: String) = url(s"bintray-$owner-$repo", new URL(s"https://dl.bintray.com/$owner/$repo/"))(Resolver.ivyStylePatterns) def jcenterRepo = JCenterRepository @@ -259,7 +264,7 @@ abstract class ResolverFunctions { } // TODO - should this just be the *exact* same as mavenLocal? probably... def publishMavenLocal: MavenCache = new MavenCache("publish-m2-local", mavenLocalDir) - def mavenLocal: IMavenRepository = new MavenCache("Maven2 Local", mavenLocalDir) + def mavenLocal: MavenRepository = new MavenCache("Maven2 Local", mavenLocalDir) def defaultLocal = defaultUserFileRepository("local") def defaultShared = defaultUserFileRepository("shared") def defaultUserFileRepository(id: String) =