mirror of https://github.com/sbt/sbt.git
Migrate to using the sbt/launcher module, rather than having the code embedded.
* Remove launch/* code/tests, as these are in the sbt/launcher project. * Create a new project which will resolve launcher module from sonatype-snapshots, and repackage it for the currently building version of sbt. * Remove ComponentManagerTest which was relying DIRECTLY on launcher classes. We'll need to reconfigure this shortly to enable the tests again. Remaining TODOs - * Update resolvers so people can find the launcher. * Add ComponentManagerTest back. * Re-publish the sbt-launch.jar in the location it used to be published.
This commit is contained in:
parent
3496288845
commit
4f1e1f61fc
79
build.sbt
79
build.sbt
|
|
@ -46,12 +46,21 @@ lazy val root: Project = (project in file(".")).
|
||||||
settings(minimalSettings ++ rootSettings: _*).
|
settings(minimalSettings ++ rootSettings: _*).
|
||||||
settings(
|
settings(
|
||||||
publish := {},
|
publish := {},
|
||||||
publishLocal := {
|
publishLocal := {}
|
||||||
val p = (proguard in (proguardedLauncherProj, Proguard)).value
|
|
||||||
IO.copyFile(p, target.value / p.getName)
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// This is used to configure an sbt-launcher for this version of sbt.
|
||||||
|
lazy val bundledLauncherProj =
|
||||||
|
(project in file("launch")).
|
||||||
|
settings(minimalSettings:_*).
|
||||||
|
settings(inConfig(Compile)(Transform.configSettings):_*).
|
||||||
|
enablePlugins(SbtLauncherPlugin).
|
||||||
|
settings(
|
||||||
|
publish := {},
|
||||||
|
publishLocal := {}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
// This is used only for command aggregation
|
// This is used only for command aggregation
|
||||||
lazy val allPrecompiled: Project = (project in file("all-precompiled")).
|
lazy val allPrecompiled: Project = (project in file("all-precompiled")).
|
||||||
aggregate(precompiled282, precompiled292, precompiled293).
|
aggregate(precompiled282, precompiled292, precompiled293).
|
||||||
|
|
@ -63,49 +72,6 @@ lazy val allPrecompiled: Project = (project in file("all-precompiled")).
|
||||||
|
|
||||||
/* ** subproject declarations ** */
|
/* ** subproject declarations ** */
|
||||||
|
|
||||||
|
|
||||||
// the launcher. Retrieves, loads, and runs applications based on a configuration file.
|
|
||||||
lazy val launchProj = (project in launchPath).
|
|
||||||
dependsOn(ioProj % "test->test", interfaceProj % Test).
|
|
||||||
settings(testedBaseSettings: _*).
|
|
||||||
settings(
|
|
||||||
name := "Launcher",
|
|
||||||
libraryDependencies ++= Seq(ivy, Dependencies.launcherInterface),
|
|
||||||
compile in Test <<= compile in Test dependsOn (publishLocal in interfaceProj, publishLocal in testSamples)
|
|
||||||
).
|
|
||||||
settings(inConfig(Compile)(Transform.configSettings): _*).
|
|
||||||
settings(inConfig(Compile)(Transform.transSourceSettings ++ Seq(
|
|
||||||
Transform.inputSourceDirectory <<= (sourceDirectory in crossProj) / "input_sources",
|
|
||||||
Transform.sourceProperties := Map("cross.package0" -> "xsbt", "cross.package1" -> "boot")
|
|
||||||
)): _*)
|
|
||||||
|
|
||||||
// the proguarded launcher
|
|
||||||
// the launcher is published with metadata so that the scripted plugin can pull it in
|
|
||||||
// being proguarded, it shouldn't ever be on a classpath with other jars, however
|
|
||||||
lazy val proguardedLauncherProj = (project in file("sbt-launch")).
|
|
||||||
configs(Proguard).
|
|
||||||
settings(minimalSettings ++ LaunchProguard.settings ++ LaunchProguard.specific(launchProj) ++
|
|
||||||
Release.launcherSettings(proguard in Proguard): _*).
|
|
||||||
settings(
|
|
||||||
name := "sbt-launch",
|
|
||||||
moduleName := "sbt-launch",
|
|
||||||
description := "sbt application launcher",
|
|
||||||
publishArtifact in packageSrc := false,
|
|
||||||
autoScalaLibrary := false,
|
|
||||||
publish <<= Seq(publish, Release.deployLauncher).dependOn,
|
|
||||||
publishLauncher <<= Release.deployLauncher,
|
|
||||||
packageBin in Compile <<= proguard in Proguard
|
|
||||||
)
|
|
||||||
|
|
||||||
// used to test the retrieving and loading of an application: sample app is packaged and published to the local repository
|
|
||||||
lazy val testSamples = (project in launchPath / "test-sample").
|
|
||||||
dependsOn(interfaceProj).
|
|
||||||
settings(baseSettings ++ noPublishSettings: _*).
|
|
||||||
settings(
|
|
||||||
name := "Launch Test",
|
|
||||||
libraryDependencies ++= Seq(scalaCompiler.value, Dependencies.launcherInterface)
|
|
||||||
)
|
|
||||||
|
|
||||||
// defines Java structures used across Scala versions, such as the API structures and relationships extracted by
|
// defines Java structures used across Scala versions, such as the API structures and relationships extracted by
|
||||||
// the analysis compiler phases and passed back to sbt. The API structures are defined in a simple
|
// the analysis compiler phases and passed back to sbt. The API structures are defined in a simple
|
||||||
// format from which Java sources are generated by the datatype generator Projproject
|
// format from which Java sources are generated by the datatype generator Projproject
|
||||||
|
|
@ -252,7 +218,7 @@ lazy val logicProj = (project in utilPath / "logic").
|
||||||
|
|
||||||
// Apache Ivy integration
|
// Apache Ivy integration
|
||||||
lazy val ivyProj = (project in file("ivy")).
|
lazy val ivyProj = (project in file("ivy")).
|
||||||
dependsOn(interfaceProj, crossProj, logProj % "compile;test->test", ioProj % "compile;test->test", launchProj % "test->test", collectionProj).
|
dependsOn(interfaceProj, crossProj, logProj % "compile;test->test", ioProj % "compile;test->test", /*launchProj % "test->test",*/ collectionProj).
|
||||||
settings(baseSettings: _*).
|
settings(baseSettings: _*).
|
||||||
settings(
|
settings(
|
||||||
name := "Ivy",
|
name := "Ivy",
|
||||||
|
|
@ -321,7 +287,7 @@ lazy val runProj = (project in file("run")).
|
||||||
// Compiler-side interface to compiler that is compiled against the compiler being used either in advance or on the fly.
|
// Compiler-side interface to compiler that is compiled against the compiler being used either in advance or on the fly.
|
||||||
// Includes API and Analyzer phases that extract source API and relationships.
|
// Includes API and Analyzer phases that extract source API and relationships.
|
||||||
lazy val compileInterfaceProj = (project in compilePath / "interface").
|
lazy val compileInterfaceProj = (project in compilePath / "interface").
|
||||||
dependsOn(interfaceProj % "compile;test->test", ioProj % "test->test", logProj % "test->test", launchProj % "test->test", apiProj % "test->test").
|
dependsOn(interfaceProj % "compile;test->test", ioProj % "test->test", logProj % "test->test", /*launchProj % "test->test",*/ apiProj % "test->test").
|
||||||
settings(baseSettings ++ precompiledSettings: _*).
|
settings(baseSettings ++ precompiledSettings: _*).
|
||||||
settings(
|
settings(
|
||||||
name := "Compiler Interface",
|
name := "Compiler Interface",
|
||||||
|
|
@ -361,7 +327,7 @@ lazy val compilePersistProj = (project in compilePath / "persist").
|
||||||
// sbt-side interface to compiler. Calls compiler-side interface reflectively
|
// sbt-side interface to compiler. Calls compiler-side interface reflectively
|
||||||
lazy val compilerProj = (project in compilePath).
|
lazy val compilerProj = (project in compilePath).
|
||||||
dependsOn(interfaceProj % "compile;test->test", logProj, ioProj, classpathProj, apiProj, classfileProj,
|
dependsOn(interfaceProj % "compile;test->test", logProj, ioProj, classpathProj, apiProj, classfileProj,
|
||||||
logProj % "test->test", launchProj % "test->test").
|
logProj % "test->test" /*,launchProj % "test->test" */).
|
||||||
settings(testedBaseSettings: _*).
|
settings(testedBaseSettings: _*).
|
||||||
settings(
|
settings(
|
||||||
name := "Compile",
|
name := "Compile",
|
||||||
|
|
@ -467,13 +433,13 @@ lazy val mavenResolverPluginProj = (project in file("sbt-maven-resolver")).
|
||||||
def scriptedTask: Initialize[InputTask[Unit]] = Def.inputTask {
|
def scriptedTask: Initialize[InputTask[Unit]] = Def.inputTask {
|
||||||
val result = scriptedSource(dir => (s: State) => scriptedParser(dir)).parsed
|
val result = scriptedSource(dir => (s: State) => scriptedParser(dir)).parsed
|
||||||
publishAll.value
|
publishAll.value
|
||||||
doScripted((proguard in Proguard in proguardedLauncherProj).value, (fullClasspath in scriptedSbtProj in Test).value,
|
doScripted((sbtLaunchJar in bundledLauncherProj).value, (fullClasspath in scriptedSbtProj in Test).value,
|
||||||
(scalaInstance in scriptedSbtProj).value, scriptedSource.value, result, scriptedPrescripted.value)
|
(scalaInstance in scriptedSbtProj).value, scriptedSource.value, result, scriptedPrescripted.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
def scriptedUnpublishedTask: Initialize[InputTask[Unit]] = Def.inputTask {
|
def scriptedUnpublishedTask: Initialize[InputTask[Unit]] = Def.inputTask {
|
||||||
val result = scriptedSource(dir => (s: State) => scriptedParser(dir)).parsed
|
val result = scriptedSource(dir => (s: State) => scriptedParser(dir)).parsed
|
||||||
doScripted((proguard in Proguard in proguardedLauncherProj).value, (fullClasspath in scriptedSbtProj in Test).value,
|
doScripted((sbtLaunchJar in bundledLauncherProj).value, (fullClasspath in scriptedSbtProj in Test).value,
|
||||||
(scalaInstance in scriptedSbtProj).value, scriptedSource.value, result, scriptedPrescripted.value)
|
(scalaInstance in scriptedSbtProj).value, scriptedSource.value, result, scriptedPrescripted.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -482,8 +448,7 @@ lazy val publishLauncher = TaskKey[Unit]("publish-launcher")
|
||||||
|
|
||||||
lazy val myProvided = config("provided") intransitive
|
lazy val myProvided = config("provided") intransitive
|
||||||
|
|
||||||
def allProjects = Seq(launchProj, proguardedLauncherProj,
|
def allProjects = Seq(interfaceProj, apiProj,
|
||||||
testSamples, interfaceProj, apiProj,
|
|
||||||
controlProj, collectionProj, applyMacroProj, processProj, ioProj, classpathProj, completeProj,
|
controlProj, collectionProj, applyMacroProj, processProj, ioProj, classpathProj, completeProj,
|
||||||
logProj, relationProj, classfileProj, datatypeProj, crossProj, logicProj, ivyProj,
|
logProj, relationProj, classfileProj, datatypeProj, crossProj, logicProj, ivyProj,
|
||||||
testingProj, testAgentProj, taskProj, stdTaskProj, cacheProj, trackingProj, runProj,
|
testingProj, testAgentProj, taskProj, stdTaskProj, cacheProj, trackingProj, runProj,
|
||||||
|
|
@ -496,8 +461,8 @@ def projectsWithMyProvided = allProjects.map(p => p.copy(configurations = (p.con
|
||||||
lazy val nonRoots = projectsWithMyProvided.map(p => LocalProject(p.id))
|
lazy val nonRoots = projectsWithMyProvided.map(p => LocalProject(p.id))
|
||||||
|
|
||||||
def rootSettings = Release.releaseSettings ++ fullDocSettings ++
|
def rootSettings = Release.releaseSettings ++ fullDocSettings ++
|
||||||
Util.publishPomSettings ++ otherRootSettings ++ Formatting.sbtFilesSettings ++
|
Util.publishPomSettings ++ otherRootSettings ++ Formatting.sbtFilesSettings /*++
|
||||||
Transform.conscriptSettings(launchProj)
|
Transform.conscriptSettings(launchProj)*/
|
||||||
def otherRootSettings = Seq(
|
def otherRootSettings = Seq(
|
||||||
Scripted.scriptedPrescripted := { _ => },
|
Scripted.scriptedPrescripted := { _ => },
|
||||||
Scripted.scripted <<= scriptedTask,
|
Scripted.scripted <<= scriptedTask,
|
||||||
|
|
@ -576,7 +541,7 @@ def precompiled(scalav: String): Project = Project(id = normalize("Precompiled "
|
||||||
|
|
||||||
lazy val safeUnitTests = taskKey[Unit]("Known working tests (for both 2.10 and 2.11)")
|
lazy val safeUnitTests = taskKey[Unit]("Known working tests (for both 2.10 and 2.11)")
|
||||||
lazy val safeProjects: ScopeFilter = ScopeFilter(
|
lazy val safeProjects: ScopeFilter = ScopeFilter(
|
||||||
inProjects(launchProj, mainSettingsProj, mainProj, ivyProj, completeProj,
|
inProjects(mainSettingsProj, mainProj, ivyProj, completeProj,
|
||||||
actionsProj, classpathProj, collectionProj, compileIncrementalProj,
|
actionsProj, classpathProj, collectionProj, compileIncrementalProj,
|
||||||
logProj, runProj, stdTaskProj),
|
logProj, runProj, stdTaskProj),
|
||||||
inConfigurations(Test)
|
inConfigurations(Test)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue