diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2016-05-03 00:45:50 +0300 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2016-05-03 10:27:23 +0300 |
commit | 323dd568b61a49c0ac17dbf3ad50098e82c2989b (patch) | |
tree | f67f5f259ff73f4c3a516310bc1d8e342eb56e98 | |
parent | af207e272664720b77b376214292b0c5716fc20b (diff) | |
download | cbt-323dd568b61a49c0ac17dbf3ad50098e82c2989b.tar.gz cbt-323dd568b61a49c0ac17dbf3ad50098e82c2989b.tar.bz2 cbt-323dd568b61a49c0ac17dbf3ad50098e82c2989b.zip |
Convenience factory methods for Resolvers
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | build/build.scala | 2 | ||||
-rw-r--r-- | plugins/scalatest/build/build.scala | 8 | ||||
-rw-r--r-- | stage1/MavenRepository.scala | 15 | ||||
-rw-r--r-- | stage1/Stage1Lib.scala | 10 | ||||
-rw-r--r-- | stage1/cbt.scala | 7 | ||||
-rw-r--r-- | stage1/resolver.scala | 26 | ||||
-rw-r--r-- | stage2/BasicBuild.scala | 7 | ||||
-rw-r--r-- | stage2/SbtDependencyDsl.scala | 28 | ||||
-rw-r--r-- | stage2/Scaffold.scala | 37 | ||||
-rw-r--r-- | stage2/ToolsTasks.scala | 23 | ||||
-rw-r--r-- | test/simple/build/build.scala | 54 | ||||
-rw-r--r-- | test/test.scala | 40 |
13 files changed, 124 insertions, 135 deletions
@@ -50,7 +50,7 @@ class Build(context: cbt.Context) extends PackageBuild(context){ override def artifactId = "play-json-extensions" override def dependencies = super.dependencies :+ - MavenResolver(context.cbtHasChanged,context.paths.mavenCache,MavenResolver.central).resolve( + resolver(mavenCentral).bind( // encouraged way to declare dependencies ScalaDependency("com.typesafe.play", "play-json", "2.4.4"), MavenDependency("joda-time", "joda-time", "2.9.2") diff --git a/build/build.scala b/build/build.scala index 0f9efe5..0f93733 100644 --- a/build/build.scala +++ b/build/build.scala @@ -6,7 +6,7 @@ import scala.collection.immutable.Seq class Build(context: Context) extends BasicBuild(context){ // FIXME: somehow consolidate this with cbt's own boot-strapping from source. override def dependencies = { - super.dependencies :+ MavenResolver(context.cbtHasChanged,context.paths.mavenCache,MavenResolver.central).resolve( + super.dependencies ++ Resolver(mavenCentral).bind( MavenDependency("net.incongru.watchservice","barbary-watchservice","1.0"), MavenDependency("org.eclipse.jgit", "org.eclipse.jgit", "4.2.0.201601211800-r"), MavenDependency("com.typesafe.zinc","zinc","0.3.9"), diff --git a/plugins/scalatest/build/build.scala b/plugins/scalatest/build/build.scala index d36d940..1377fa8 100644 --- a/plugins/scalatest/build/build.scala +++ b/plugins/scalatest/build/build.scala @@ -4,10 +4,10 @@ import java.io.File import scala.collection.immutable.Seq class Build(context: Context) extends BasicBuild(context){ - override def dependencies = super.dependencies ++ Seq( - MavenResolver(context.cbtHasChanged,context.paths.mavenCache,MavenResolver.central).resolve( + override def dependencies = + super.dependencies ++ + Resolver( mavenCentral ).bind( ScalaDependency("org.scalatest","scalatest","2.2.4") - ), + ) :+ context.cbtDependency - ) } diff --git a/stage1/MavenRepository.scala b/stage1/MavenRepository.scala index aa31cb8..06189d1 100644 --- a/stage1/MavenRepository.scala +++ b/stage1/MavenRepository.scala @@ -3,17 +3,8 @@ import scala.collection.immutable.Seq import java.io._ import java.net._ case class MavenResolver( cbtHasChanged: Boolean, mavenCache: File, urls: URL* ){ - def resolve( dependencies: MavenDependency* )(implicit logger: Logger): BoundMavenDependencies - = new BoundMavenDependencies( cbtHasChanged, mavenCache, urls.to, dependencies.to ) - def resolveOne( dependency: MavenDependency )(implicit logger: Logger): BoundMavenDependency + def bind( dependencies: MavenDependency* )(implicit logger: Logger): Seq[BoundMavenDependency] + = dependencies.map( BoundMavenDependency(cbtHasChanged,mavenCache,_,urls.to) ).to + def bindOne( dependency: MavenDependency )(implicit logger: Logger): BoundMavenDependency = BoundMavenDependency( cbtHasChanged, mavenCache, dependency, urls.to ) } - -object MavenResolver{ - def central = new URL("https://repo1.maven.org/maven2") - def jcenter = new URL("https://jcenter.bintray.com/releases") - def bintray(owner: String) = new URL(s"https://dl.bintray.com/$owner/maven") - private val sonatypeBase = new URL("https://oss.sonatype.org/content/repositories/") - def sonatype = sonatypeBase ++ "releases" - def sonatypeSnapshots = sonatypeBase ++ "snapshots" -} diff --git a/stage1/Stage1Lib.scala b/stage1/Stage1Lib.scala index 7b09be2..027818c 100644 --- a/stage1/Stage1Lib.scala +++ b/stage1/Stage1Lib.scala @@ -150,8 +150,8 @@ class Stage1Lib( val logger: Logger ) extends BaseLib{ None }else{ if( needsRecompile ){ - val central = MavenResolver(cbtHasChanged, mavenCache,MavenResolver.central) - val zinc = central.resolveOne(MavenDependency("com.typesafe.zinc","zinc", zincVersion)) + def Resolver(urls: URL*) = MavenResolver(cbtHasChanged, mavenCache, urls: _*) + val zinc = Resolver(mavenCentral).bindOne(MavenDependency("com.typesafe.zinc","zinc", zincVersion)) val zincDeps = zinc.transitiveDependencies val sbtInterface = @@ -176,9 +176,9 @@ class Stage1Lib( val logger: Logger ) extends BaseLib{ .getOrElse( throw new Exception(s"cannot find compiler-interface in zinc $zincVersion dependencies: "++zincDeps.toString) ) .jar - val scalaLibrary = central.resolveOne(MavenDependency("org.scala-lang","scala-library",scalaVersion)).jar - val scalaReflect = central.resolveOne(MavenDependency("org.scala-lang","scala-reflect",scalaVersion)).jar - val scalaCompiler = central.resolveOne(MavenDependency("org.scala-lang","scala-compiler",scalaVersion)).jar + val scalaLibrary = Resolver(mavenCentral).bindOne(MavenDependency("org.scala-lang","scala-library",scalaVersion)).jar + val scalaReflect = Resolver(mavenCentral).bindOne(MavenDependency("org.scala-lang","scala-reflect",scalaVersion)).jar + val scalaCompiler = Resolver(mavenCentral).bindOne(MavenDependency("org.scala-lang","scala-compiler",scalaVersion)).jar val start = System.currentTimeMillis diff --git a/stage1/cbt.scala b/stage1/cbt.scala index 33422cc..b1c462b 100644 --- a/stage1/cbt.scala +++ b/stage1/cbt.scala @@ -6,6 +6,13 @@ import scala.collection.immutable.Seq import java.util.concurrent.ConcurrentHashMap object `package`{ + val mavenCentral = new URL("https://repo1.maven.org/maven2") + val jcenter = new URL("https://jcenter.bintray.com") + def bintray(owner: String) = new URL(s"https://dl.bintray.com/$owner/maven") // FIXME: url encode owner + private val sonatypeBase = new URL("https://oss.sonatype.org/content/repositories/") + val sonatypeReleases = sonatypeBase ++ "releases" + val sonatypeSnapshots = sonatypeBase ++ "snapshots" + private val lib = new BaseLib implicit class FileExtensionMethods( file: File ){ def ++( s: String ): File = { diff --git a/stage1/resolver.scala b/stage1/resolver.scala index d195fa4..cd5f3e8 100644 --- a/stage1/resolver.scala +++ b/stage1/resolver.scala @@ -109,9 +109,9 @@ abstract class DependencyImplementation extends Dependency{ } // TODO: all this hard codes the scala version, needs more flexibility -class ScalaCompilerDependency(cbtHasChanged: Boolean, mavenCache: File, version: String)(implicit logger: Logger) extends BoundMavenDependency(cbtHasChanged, mavenCache, MavenDependency("org.scala-lang","scala-compiler",version, Classifier.none), Seq(MavenResolver.central)) -class ScalaLibraryDependency (cbtHasChanged: Boolean, mavenCache: File, version: String)(implicit logger: Logger) extends BoundMavenDependency(cbtHasChanged, mavenCache, MavenDependency("org.scala-lang","scala-library",version, Classifier.none), Seq(MavenResolver.central)) -class ScalaReflectDependency (cbtHasChanged: Boolean, mavenCache: File, version: String)(implicit logger: Logger) extends BoundMavenDependency(cbtHasChanged, mavenCache, MavenDependency("org.scala-lang","scala-reflect",version, Classifier.none), Seq(MavenResolver.central)) +class ScalaCompilerDependency(cbtHasChanged: Boolean, mavenCache: File, version: String)(implicit logger: Logger) extends BoundMavenDependency(cbtHasChanged, mavenCache, MavenDependency("org.scala-lang","scala-compiler",version, Classifier.none), Seq(mavenCentral)) +class ScalaLibraryDependency (cbtHasChanged: Boolean, mavenCache: File, version: String)(implicit logger: Logger) extends BoundMavenDependency(cbtHasChanged, mavenCache, MavenDependency("org.scala-lang","scala-library",version, Classifier.none), Seq(mavenCentral)) +class ScalaReflectDependency (cbtHasChanged: Boolean, mavenCache: File, version: String)(implicit logger: Logger) extends BoundMavenDependency(cbtHasChanged, mavenCache, MavenDependency("org.scala-lang","scala-reflect",version, Classifier.none), Seq(mavenCentral)) case class ScalaDependencies(cbtHasChanged: Boolean, mavenCache: File, version: String)(implicit val logger: Logger) extends DependencyImplementation{ sd => override final val needsUpdate = false @@ -146,11 +146,11 @@ case class Stage1Dependency(cbtHasChanged: Boolean, mavenCache: File, nailgunTar override def exportedClasspath = ClassPath( Seq(nailgunTarget, stage1Target) ) val compatibilityDependency = CompatibilityDependency(cbtHasChanged, compatibilityTarget) override def dependencies = Seq( - compatibilityDependency, - MavenResolver(cbtHasChanged,mavenCache,MavenResolver.central).resolve( - MavenDependency("org.scala-lang","scala-library",constants.scalaVersion), - MavenDependency("org.scala-lang.modules","scala-xml_"+constants.scalaMajorVersion,constants.scalaXmlVersion) - ) + compatibilityDependency + ) ++ + MavenResolver(cbtHasChanged,mavenCache,mavenCentral).bind( + MavenDependency("org.scala-lang","scala-library",constants.scalaVersion), + MavenDependency("org.scala-lang.modules","scala-xml_"+constants.scalaMajorVersion,constants.scalaXmlVersion) ) } case class CompatibilityDependency(cbtHasChanged: Boolean, compatibilityTarget: File)(implicit val logger: Logger) extends DependencyImplementation{ @@ -165,11 +165,11 @@ case class CbtDependency(cbtHasChanged: Boolean, mavenCache: File, nailgunTarget override def exportedClasspath = ClassPath( Seq( stage2Target ) ) val stage1Dependency = Stage1Dependency(cbtHasChanged, mavenCache, nailgunTarget, stage1Target, compatibilityTarget) override def dependencies = Seq( - stage1Dependency, - MavenResolver(cbtHasChanged, mavenCache,MavenResolver.central).resolve( - MavenDependency("net.incongru.watchservice","barbary-watchservice","1.0"), - MavenDependency("org.eclipse.jgit", "org.eclipse.jgit", "4.2.0.201601211800-r") - ) + stage1Dependency + ) ++ + MavenResolver(cbtHasChanged, mavenCache,mavenCentral).bind( + MavenDependency("net.incongru.watchservice","barbary-watchservice","1.0"), + MavenDependency("org.eclipse.jgit", "org.eclipse.jgit", "4.2.0.201601211800-r") ) } diff --git a/stage2/BasicBuild.scala b/stage2/BasicBuild.scala index fb5e652..4ae4cd1 100644 --- a/stage2/BasicBuild.scala +++ b/stage2/BasicBuild.scala @@ -47,12 +47,11 @@ class BasicBuild(val context: Context) extends DependencyImplementation with Bui def copy(context: Context): BuildInterface = lib.copy(this.getClass, context).asInstanceOf[BuildInterface] def zincVersion = "0.3.9" - def dependencies: Seq[Dependency] = Seq( + def dependencies: Seq[Dependency] = // FIXME: this should probably be removed - MavenResolver(context.cbtHasChanged, context.paths.mavenCache, MavenResolver.central).resolve( + Resolver( mavenCentral ).bind( "org.scala-lang" % "scala-library" % scalaVersion ) - ) // ========== paths ========== final private val defaultSourceDirectory = projectDirectory ++ "/src" @@ -92,6 +91,8 @@ class BasicBuild(val context: Context) extends DependencyImplementation with Bui } assertSourceDirectories() + def Resolver( urls: URL* ) = MavenResolver( context.cbtHasChanged, context.paths.mavenCache, urls: _* ) + def ScalaDependency( groupId: String, artifactId: String, version: String, classifier: Classifier = Classifier.none, scalaVersion: String = scalaMajorVersion diff --git a/stage2/SbtDependencyDsl.scala b/stage2/SbtDependencyDsl.scala index d8c0786..4c95308 100644 --- a/stage2/SbtDependencyDsl.scala +++ b/stage2/SbtDependencyDsl.scala @@ -12,32 +12,4 @@ trait SbtDependencyDsl{ self: BasicBuild => def %%(artifactId: String) = new DependencyBuilder2( groupId, artifactId, Some(scalaMajorVersion) ) def %(artifactId: String) = new DependencyBuilder2( groupId, artifactId, None ) } - implicit class DependencyBuilder3(d: MavenDependency){ - def %(classifier: String): MavenDependency = d//.copy(classifier = Classifier(Some(classifier))) - } - - /* - /** SBT-like dependency builder DSL for syntax compatibility */ - implicit class DependencyBuilder0(repository: Maven){ - def %(groupId: String) = new DependencyBuilder1b(repository, groupId) - } - implicit class DependencyBuilder1a(groupId: String){ - def %%(artifactId: String) = new DependencyBuilder2( Maven.central, groupId, artifactId, Some(scalaMajorVersion) ) - def %(artifactId: String) = new DependencyBuilder2( Maven.central, groupId, artifactId, None ) - } - class DependencyBuilder1b(repository: Maven, groupId: String){ - def %%(artifactId: String) = new DependencyBuilder2( repository, groupId, artifactId, Some(scalaMajorVersion) ) - def %(artifactId: String) = new DependencyBuilder2( repository, groupId, artifactId, None ) - } - class DependencyBuilder2( repository: Maven, groupId: String, artifactId: String, scalaMajorVersion: Option[String] ){ - def %(version: String) = scalaMajorVersion.map( - v => repository(groupId, artifactId, version, scalaMajorVersion = v) - ).getOrElse( - repository.java(groupId, artifactId, version) - ) - } - implicit class DependencyBuilder3(d: MavenDependency){ - def %(classifier: String) = d.copy(classifier = Classifier(Some(classifier))) - } - */ }
\ No newline at end of file diff --git a/stage2/Scaffold.scala b/stage2/Scaffold.scala index 407fee1..6c66b04 100644 --- a/stage2/Scaffold.scala +++ b/stage2/Scaffold.scala @@ -13,7 +13,7 @@ trait Scaffold{ println( GREEN ++ "Created " ++ fileName ++ RESET ) } - def scaffoldBasicBuild( + def createBasicBuild( projectDirectory: File ): Unit = { createFile(projectDirectory, "build/build.scala", s"""import cbt._ @@ -23,11 +23,17 @@ import scala.collection.immutable.Seq class Build(context: Context) extends BasicBuild(context){ override def dependencies = { // don't forget super.dependencies here - super.dependencies :+ MavenResolver(context.cbtHasChanged,context.paths.mavenCache,MavenResolver.central).resolve( - MavenDependency("net.incongru.watchservice","barbary-watchservice","1.0"), - MavenDependency("org.eclipse.jgit", "org.eclipse.jgit", "4.2.0.201601211800-r"), - MavenDependency("com.typesafe.zinc","zinc","0.3.9"), - ScalaDependency("org.scala-lang.modules","scala-xml","1.0.5") + super.dependencies ++ Resolver( mavenCentral ).bind( + /* + // Scala dependency automatically adding Scala major version to artifact id + ScalaDependency("com.lihaoyi", "ammonite-ops", "0.5.5") + // SBT-style Scala dependency + "com.lihaoyi" %% "ammonite-ops" % "0.5.5" + // Java dependency directly corresponding to maven artifact id + MavenDependency("com.lihaoyi", "ammonite-ops_2.11", "0.5.5") + // SBT-style Java dependency + "com.lihaoyi" % "ammonite-ops_2.11" % "0.5.5" + */ ) } } @@ -36,7 +42,7 @@ class Build(context: Context) extends BasicBuild(context){ } - def scaffoldBuildBuild( + def createBuildBuild( projectDirectory: File ): Unit = { createFile(projectDirectory, "build/build/build.scala", s"""import cbt._ @@ -45,9 +51,20 @@ import java.io.File import scala.collection.immutable.Seq class Build(context: Context) extends BuildBuild(context){ - override def dependencies = super.dependencies ++ Seq( - // , "com.lihaoyi" %% "ammonite-ops" % "0.5.5" - ) + override def dependencies = { // don't forget super.dependencies here + super.dependencies ++ Resolver( mavenCentral ).bind( + /* + // Scala dependency automatically adding Scala major version to artifact id + ScalaDependency("com.lihaoyi", "ammonite-ops", "0.5.5") + // SBT-style Scala dependency + "com.lihaoyi" %% "ammonite-ops" % "0.5.5" + // Java dependency directly corresponding to maven artifact id + MavenDependency("com.lihaoyi", "ammonite-ops_2.11", "0.5.5") + // SBT-style Java dependency + "com.lihaoyi" % "ammonite-ops_2.11" % "0.5.5" + */ + ) + } } """ ) diff --git a/stage2/ToolsTasks.scala b/stage2/ToolsTasks.scala index 46f1336..5afbac0 100644 --- a/stage2/ToolsTasks.scala +++ b/stage2/ToolsTasks.scala @@ -1,5 +1,6 @@ package cbt import scala.collection.immutable.Seq +import java.net._ import java.io.{Console=>_,_} import java.nio.file._ class ToolsTasks( @@ -13,14 +14,16 @@ class ToolsTasks( ){ private val paths = CbtPaths(cbtHome, cache) import paths._ - private val mavenCentral = MavenResolver(cbtHasChanged,mavenCache,MavenResolver.central) + private def Resolver( urls: URL* ) = MavenResolver(cbtHasChanged,mavenCache,urls: _*) implicit val logger: Logger = lib.logger + def createBasicBuild: Unit = lib.createBasicBuild( cwd ) + def createBuildBuild: Unit = lib.createBuildBuild( cwd ) def resolve = { ClassPath.flatten( args(1).split(",").toVector.map{ d => val v = d.split(":") - mavenCentral.resolveOne(MavenDependency(v(0),v(1),v(2))).classpath + Resolver(mavenCentral).bindOne(MavenDependency(v(0),v(1),v(2))).classpath } ) } @@ -28,14 +31,14 @@ class ToolsTasks( args(1).split(",").toVector.map{ d => val v = d.split(":") - mavenCentral.resolveOne(MavenDependency(v(0),v(1),v(2))).dependencyTree + Resolver(mavenCentral).bindOne(MavenDependency(v(0),v(1),v(2))).dependencyTree }.mkString("\n\n") } def amm = ammonite def ammonite = { val version = args.lift(1).getOrElse(constants.scalaVersion) val scalac = new ScalaCompilerDependency( cbtHasChanged,mavenCache, version ) - val d = mavenCentral.resolveOne( + val d = Resolver(mavenCentral).bindOne( MavenDependency( "com.lihaoyi","ammonite-repl_2.11.7",args.lift(1).getOrElse("0.5.7") ) @@ -52,24 +55,22 @@ class ToolsTasks( "scala.tools.nsc.MainGenericRunner", Seq("-cp", scalac.classpath.string), scalac.classLoader(classLoaderCache) ) } - def scaffoldBasicBuild: Unit = lib.scaffoldBasicBuild( cwd ) - def scaffoldBuildBuild: Unit = lib.scaffoldBuildBuild( cwd ) def cbtEarlyDependencies = { val scalaVersion = args.lift(1).getOrElse(constants.scalaVersion) val scalaMajorVersion = scalaVersion.split("\\.").take(2).mkString(".") val scalaXmlVersion = args.lift(2).getOrElse(constants.scalaXmlVersion) val zincVersion = args.lift(3).getOrElse(constants.zincVersion) val scalaDeps = Seq( - mavenCentral.resolveOne(MavenDependency("org.scala-lang","scala-reflect",scalaVersion)), - mavenCentral.resolveOne(MavenDependency("org.scala-lang","scala-compiler",scalaVersion)) + Resolver(mavenCentral).bindOne(MavenDependency("org.scala-lang","scala-reflect",scalaVersion)), + Resolver(mavenCentral).bindOne(MavenDependency("org.scala-lang","scala-compiler",scalaVersion)) ) val scalaXml = Dependencies( - mavenCentral.resolveOne(MavenDependency("org.scala-lang.modules","scala-xml_"+scalaMajorVersion,scalaXmlVersion)), - mavenCentral.resolveOne(MavenDependency("org.scala-lang","scala-library",scalaVersion)) + Resolver(mavenCentral).bindOne(MavenDependency("org.scala-lang.modules","scala-xml_"+scalaMajorVersion,scalaXmlVersion)), + Resolver(mavenCentral).bindOne(MavenDependency("org.scala-lang","scala-library",scalaVersion)) ) - val zinc = mavenCentral.resolveOne(MavenDependency("com.typesafe.zinc","zinc",zincVersion)) + val zinc = Resolver(mavenCentral).bindOne(MavenDependency("com.typesafe.zinc","zinc",zincVersion)) def valName(dep: BoundMavenDependency) = { val words = dep.artifactId.split("_").head.split("-") diff --git a/test/simple/build/build.scala b/test/simple/build/build.scala index ab901e9..b5955c9 100644 --- a/test/simple/build/build.scala +++ b/test/simple/build/build.scala @@ -7,34 +7,32 @@ class Build(context: cbt.Context) extends BasicBuild(context){ super.dependencies ++ Seq( - GitDependency("https://github.com/xdotai/diff.git", "698717469b8dd86e8570b86354892be9c0654caf"), - // FIXME: make the below less verbose - MavenResolver(context.cbtHasChanged,context.paths.mavenCache,MavenResolver.central).resolve( - ScalaDependency("com.typesafe.play", "play-json", "2.4.4"), - MavenDependency("joda-time", "joda-time", "2.9.2"), - // the below tests pom inheritance with dependencyManagement and variable substitution for pom properties - MavenDependency("org.eclipse.jgit", "org.eclipse.jgit", "4.2.0.201601211800-r"), - // the below tests pom inheritance with variable substitution for pom xml tag contents - MavenDependency("com.spotify", "missinglink-core", "0.1.1"), - // the below tests pom inheritance with variable substitution being parts of strings - MavenDependency("cc.factorie","factorie_2.11","1.2") - // the dependency below uses a maven version range. Currently not supported. - // TODO: put in a proper error message for version range not supported - //MavenDependency("com.github.nikita-volkov", "sext", "0.2.4") - // currently breaks with can't find https://repo1.maven.org/maven2/org/apache/avro/avro-mapred/1.7.7/avro-mapred-1.7.7-hadoop2.pom.sha1 - // org.apache.spark:spark-sql_2.11:1.6.1 - ), - MavenResolver( - context.cbtHasChanged, - context.paths.mavenCache, - MavenResolver.central, - MavenResolver.bintray("tpolecat"), - MavenResolver.sonatypeSnapshots - ).resolve( - "org.cvogt" %% "play-json-extensions" % "0.8.0", - "org.tpolecat" %% "tut-core" % "0.4.2", - "ai.x" %% "lens" % "1.0.0-SNAPSHOT" - ) + GitDependency("https://github.com/xdotai/diff.git", "698717469b8dd86e8570b86354892be9c0654caf") + ) ++ + // FIXME: make the below less verbose + Resolver( mavenCentral ).bind( + ScalaDependency("com.typesafe.play", "play-json", "2.4.4"), + MavenDependency("joda-time", "joda-time", "2.9.2"), + // the below tests pom inheritance with dependencyManagement and variable substitution for pom properties + MavenDependency("org.eclipse.jgit", "org.eclipse.jgit", "4.2.0.201601211800-r"), + // the below tests pom inheritance with variable substitution for pom xml tag contents + MavenDependency("com.spotify", "missinglink-core", "0.1.1"), + // the below tests pom inheritance with variable substitution being parts of strings + MavenDependency("cc.factorie","factorie_2.11","1.2") + // the dependency below uses a maven version range. Currently not supported. + // TODO: put in a proper error message for version range not supported + //MavenDependency("com.github.nikita-volkov", "sext", "0.2.4") + // currently breaks with can't find https://repo1.maven.org/maven2/org/apache/avro/avro-mapred/1.7.7/avro-mapred-1.7.7-hadoop2.pom.sha1 + // org.apache.spark:spark-sql_2.11:1.6.1 + ) ++ + Resolver( + mavenCentral, + bintray("tpolecat"), + sonatypeSnapshots + ).bind( + "org.cvogt" %% "play-json-extensions" % "0.8.0", + "org.tpolecat" %% "tut-core" % "0.4.2", + "ai.x" %% "lens" % "1.0.0-SNAPSHOT" ) ) } diff --git a/test/test.scala b/test/test.scala index bebd143..b425cfa 100644 --- a/test/test.scala +++ b/test/test.scala @@ -2,6 +2,7 @@ import cbt._ import scala.collection.immutable.Seq import java.util.concurrent.ConcurrentHashMap import java.io.File +import java.net.URL // micro framework object Main{ @@ -76,7 +77,7 @@ object Main{ val cache = cbtHome ++ "/cache" val mavenCache = cache ++ "/maven" val cbtHasChanged = true - val mavenCentral = MavenResolver(cbtHasChanged, mavenCache, MavenResolver.central) + def Resolver(urls: URL*) = MavenResolver(cbtHasChanged, mavenCache, urls: _*) { val noContext = ContextImplementation( @@ -97,12 +98,11 @@ object Main{ ) val b = new BasicBuild(noContext){ - override def dependencies = Seq( - mavenCentral.resolve( + override def dependencies = + Resolver(mavenCentral).bind( MavenDependency("net.incongru.watchservice","barbary-watchservice","1.0"), MavenDependency("net.incongru.watchservice","barbary-watchservice","1.0") ) - ) } val cp = b.classpath assert(cp.strings.distinct == cp.strings, "duplicates in classpath: " ++ cp.string) @@ -110,36 +110,38 @@ object Main{ // test that messed up artifacts crash with an assertion (which should tell the user what's up) assertException[AssertionError](){ - mavenCentral.resolveOne( MavenDependency("com.jcraft", "jsch", " 0.1.53") ).classpath + Resolver(mavenCentral).bindOne( MavenDependency("com.jcraft", "jsch", " 0.1.53") ).classpath } assertException[AssertionError](){ - mavenCentral.resolveOne( MavenDependency("com.jcraft", null, "0.1.53") ).classpath + Resolver(mavenCentral).bindOne( MavenDependency("com.jcraft", null, "0.1.53") ).classpath } assertException[AssertionError](){ - mavenCentral.resolveOne( MavenDependency("com.jcraft", "", " 0.1.53") ).classpath + Resolver(mavenCentral).bindOne( MavenDependency("com.jcraft", "", " 0.1.53") ).classpath } assertException[AssertionError](){ - mavenCentral.resolveOne( MavenDependency("com.jcraft%", "jsch", " 0.1.53") ).classpath + Resolver(mavenCentral).bindOne( MavenDependency("com.jcraft%", "jsch", " 0.1.53") ).classpath } assertException[AssertionError](){ - mavenCentral.resolveOne( MavenDependency("", "jsch", " 0.1.53") ).classpath + Resolver(mavenCentral).bindOne( MavenDependency("", "jsch", " 0.1.53") ).classpath } ( - MavenResolver( - cbtHasChanged, mavenCache, MavenResolver.central, MavenResolver.bintray("tpolecat") - ).resolve( - lib.ScalaDependency("org.tpolecat","tut-core","0.4.2", scalaMajorVersion="2.11") + Dependencies( + Resolver( mavenCentral, bintray("tpolecat") ).bind( + lib.ScalaDependency("org.tpolecat","tut-core","0.4.2", scalaMajorVersion="2.11") + ) ).classpath.strings ++ - MavenResolver(cbtHasChanged, mavenCache,MavenResolver.sonatype).resolve( + Dependencies( + Resolver(sonatypeReleases).bind( MavenDependency("org.cvogt","play-json-extensions_2.11","0.8.0") - ).classpath.strings + ) + ).classpath.strings ++ - MavenResolver( - cbtHasChanged, mavenCache, MavenResolver.central, MavenResolver.sonatypeSnapshots - ).resolve( - MavenDependency("ai.x","lens_2.11","1.0.0-SNAPSHOT") + Dependencies( + Resolver( mavenCentral, sonatypeSnapshots ).bind( + MavenDependency("ai.x","lens_2.11","1.0.0-SNAPSHOT") + ) ).classpath.strings ).foreach{ path => assert(new File(path).exists, path) |