mirror of https://github.com/sbt/sbt.git
Fix dependency-management/artifact
This commit is contained in:
parent
05a33042ef
commit
b8bc58d248
|
|
@ -0,0 +1,41 @@
|
||||||
|
import sbt.internal.inc.classpath.ClasspathUtilities
|
||||||
|
|
||||||
|
lazy val checkFull = TaskKey[Unit]("check-full")
|
||||||
|
lazy val check = TaskKey[Unit]("check")
|
||||||
|
|
||||||
|
lazy val root = (project in file(".")).
|
||||||
|
settings(
|
||||||
|
ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))),
|
||||||
|
publishTo := Some(Resolver.file("Test Publish Repo", file("test-repo"))),
|
||||||
|
resolvers <+= baseDirectory { base => "Test Repo" at (base / "test-repo").toURI.toString },
|
||||||
|
moduleName := artifactID,
|
||||||
|
projectID <<= baseDirectory { base => (if(base / "retrieve" exists) retrieveID else publishedID) },
|
||||||
|
artifact in (Compile, packageBin) := mainArtifact,
|
||||||
|
libraryDependencies <<= (libraryDependencies, baseDirectory) { (deps, base) => deps ++ (if(base / "retrieve" exists) publishedID :: Nil else Nil) },
|
||||||
|
// needed to add a jar with a different type to the managed classpath
|
||||||
|
unmanagedClasspath in Compile <+= scalaInstance.map(_.libraryJar),
|
||||||
|
classpathTypes := Set(tpe),
|
||||||
|
check <<= checkTask(dependencyClasspath),
|
||||||
|
checkFull <<= checkTask(fullClasspath)
|
||||||
|
)
|
||||||
|
|
||||||
|
// define strings for defining the artifact
|
||||||
|
def artifactID = "test"
|
||||||
|
def ext = "test2"
|
||||||
|
def classifier = "test3"
|
||||||
|
def tpe = "test1"
|
||||||
|
def vers = "1.1"
|
||||||
|
def org = "test"
|
||||||
|
|
||||||
|
def mainArtifact = Artifact(artifactID, tpe, ext, classifier)
|
||||||
|
|
||||||
|
// define the IDs to use for publishing and retrieving
|
||||||
|
def publishedID = org % artifactID % vers artifacts(mainArtifact)
|
||||||
|
def retrieveID = org % "test-retrieve" % "2.0"
|
||||||
|
|
||||||
|
// check that the test class is on the compile classpath, either because it was compiled or because it was properly retrieved
|
||||||
|
def checkTask(classpath: TaskKey[Classpath]) = (classpath in Compile, scalaInstance) map { (cp, si) =>
|
||||||
|
val loader = ClasspathUtilities.toLoader(cp.files, si.loader)
|
||||||
|
try { Class.forName("test.Test", false, loader); () }
|
||||||
|
catch { case _: ClassNotFoundException | _: NoClassDefFoundError => sys.error("Dependency not retrieved properly") }
|
||||||
|
}
|
||||||
|
|
@ -1,45 +0,0 @@
|
||||||
import sbt._
|
|
||||||
import Import._
|
|
||||||
import Keys._
|
|
||||||
|
|
||||||
object ArtifactTest extends Build
|
|
||||||
{
|
|
||||||
lazy val root = Project("root", file(".")) settings(
|
|
||||||
ivyPaths <<= (baseDirectory, target)( (dir, t) => new IvyPaths(dir, Some(t / "ivy-cache"))),
|
|
||||||
publishTo := Some(Resolver.file("Test Publish Repo", file("test-repo"))),
|
|
||||||
resolvers <+= baseDirectory { base => "Test Repo" at (base / "test-repo").toURI.toString },
|
|
||||||
moduleName := artifactID,
|
|
||||||
projectID <<= baseDirectory { base => (if(base / "retrieve" exists) retrieveID else publishedID) },
|
|
||||||
artifact in (Compile, packageBin) := mainArtifact,
|
|
||||||
libraryDependencies <<= (libraryDependencies, baseDirectory) { (deps, base) => deps ++ (if(base / "retrieve" exists) publishedID :: Nil else Nil) },
|
|
||||||
// needed to add a jar with a different type to the managed classpath
|
|
||||||
unmanagedClasspath in Compile <+= scalaInstance.map(_.libraryJar),
|
|
||||||
classpathTypes := Set(tpe),
|
|
||||||
check <<= checkTask(dependencyClasspath),
|
|
||||||
checkFull <<= checkTask(fullClasspath)
|
|
||||||
)
|
|
||||||
|
|
||||||
lazy val checkFull = TaskKey[Unit]("check-full")
|
|
||||||
lazy val check = TaskKey[Unit]("check")
|
|
||||||
|
|
||||||
// define strings for defining the artifact
|
|
||||||
def artifactID = "test"
|
|
||||||
def ext = "test2"
|
|
||||||
def classifier = "test3"
|
|
||||||
def tpe = "test1"
|
|
||||||
def vers = "1.1"
|
|
||||||
def org = "test"
|
|
||||||
|
|
||||||
def mainArtifact = Artifact(artifactID, tpe, ext, classifier)
|
|
||||||
|
|
||||||
// define the IDs to use for publishing and retrieving
|
|
||||||
def publishedID = org % artifactID % vers artifacts(mainArtifact)
|
|
||||||
def retrieveID = org % "test-retrieve" % "2.0"
|
|
||||||
|
|
||||||
// check that the test class is on the compile classpath, either because it was compiled or because it was properly retrieved
|
|
||||||
def checkTask(classpath: TaskKey[Classpath]) = (classpath in Compile, scalaInstance) map { (cp, si) =>
|
|
||||||
val loader = sbt.classpath.ClasspathUtilities.toLoader(cp.files, si.loader)
|
|
||||||
try { Class.forName("test.Test", false, loader); () }
|
|
||||||
catch { case _: ClassNotFoundException | _: NoClassDefFoundError => sys.error("Dependency not retrieved properly") }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue