From 2f13b7a8c726b51f5765830a5ee810c9906760bd Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Wed, 27 Mar 2013 09:17:53 -0400 Subject: [PATCH] add publish-m2 task for publishing to ~/.m2/repository. Fixes #485. --- ivy/src/main/scala/sbt/Resolver.scala | 4 +++- main/src/main/scala/sbt/Defaults.scala | 6 ++++-- main/src/main/scala/sbt/Keys.scala | 6 ++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/ivy/src/main/scala/sbt/Resolver.scala b/ivy/src/main/scala/sbt/Resolver.scala index e315944da..82aea65d4 100644 --- a/ivy/src/main/scala/sbt/Resolver.scala +++ b/ivy/src/main/scala/sbt/Resolver.scala @@ -273,7 +273,9 @@ object Resolver def defaultRetrievePattern = "[type]s/[organisation]/[module]/" + PluginPattern + "[artifact](-[revision])(-[classifier]).[ext]" final val PluginPattern = "(scala_[scalaVersion]/)(sbt_[sbtVersion]/)" - def mavenLocal = MavenRepository("Maven2 Local", (new File(Path.userHome, ".m2/repository/")).toURI.toURL.toExternalForm) + private[this] def mavenLocalDir = new File(Path.userHome, ".m2/repository/") + def publishMavenLocal = Resolver.file("publish-m2-local", mavenLocalDir) + def mavenLocal = MavenRepository("Maven2 Local", mavenLocalDir.toURI.toString) def defaultLocal = defaultUserFileRepository("local") def defaultShared = defaultUserFileRepository("shared") def defaultUserFileRepository(id: String) = diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index a029cbc2d..8ab981ce7 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -865,7 +865,8 @@ object Classpaths deliver <<= deliverTask(deliverConfiguration), deliverLocal <<= deliverTask(deliverLocalConfiguration), publish <<= publishTask(publishConfiguration, deliver), - publishLocal <<= publishTask(publishLocalConfiguration, deliverLocal) + publishLocal <<= publishTask(publishLocalConfiguration, deliverLocal), + publishM2 <<= publishTask(publishM2Configuration, deliverLocal) ) val baseSettings: Seq[Setting[_]] = sbtClassifiersTasks ++ Seq( conflictWarning in GlobalScope :== ConflictWarning.default("global"), @@ -903,7 +904,7 @@ object Classpaths defaultConfiguration in GlobalScope :== Some(Configurations.Compile), defaultConfigurationMapping in GlobalScope <<= defaultConfiguration{ case Some(d) => "*->" + d.name; case None => "*->*" }, ivyPaths := new IvyPaths(baseDirectory.value, bootIvyHome(appConfiguration.value)), - otherResolvers := publishTo.value.toList, + otherResolvers := Resolver.publishMavenLocal :: publishTo.value.toList, projectResolver <<= projectResolverTask, projectDependencies <<= projectDependenciesTask, dependencyOverrides in GlobalScope :== Set.empty, @@ -948,6 +949,7 @@ object Classpaths deliverConfiguration <<= deliverLocalConfiguration, publishConfiguration := publishConfig(packagedArtifacts.value, if(publishMavenStyle.value) None else Some(deliver.value), resolverName = getPublishTo(publishTo.value).name, checksums = checksums.in(publish).value, logging = ivyLoggingLevel.value), publishLocalConfiguration := publishConfig(packagedArtifacts.value, Some(deliverLocal.value), checksums.in(publishLocal).value, logging = ivyLoggingLevel.value ), + publishM2Configuration := publishConfig(packagedArtifacts.value, None, resolverName = Resolver.publishMavenLocal.name, checksums = checksums.in(publishM2).value, logging = ivyLoggingLevel.value), ivySbt <<= ivySbt0, ivyModule := { val is = ivySbt.value; new is.Module(moduleSettings.value) }, transitiveUpdate <<= transitiveUpdateTask, diff --git a/main/src/main/scala/sbt/Keys.scala b/main/src/main/scala/sbt/Keys.scala index be89d73f1..3cdbf4395 100644 --- a/main/src/main/scala/sbt/Keys.scala +++ b/main/src/main/scala/sbt/Keys.scala @@ -247,7 +247,8 @@ object Keys val updateSbtClassifiers = TaskKey[UpdateReport]("update-sbt-classifiers", "Resolves and optionally retrieves classifiers, such as javadocs and sources, for sbt, transitively.", BPlusTask, updateClassifiers) val publishConfiguration = TaskKey[PublishConfiguration]("publish-configuration", "Configuration for publishing to a repository.", DTask) - val publishLocalConfiguration = TaskKey[PublishConfiguration]("publish-local-configuration", "Configuration for publishing to the local repository.", DTask) + val publishLocalConfiguration = TaskKey[PublishConfiguration]("publish-local-configuration", "Configuration for publishing to the local Ivy repository.", DTask) + val publishM2Configuration = TaskKey[PublishConfiguration]("publish-m2-configuration", "Configuration for publishing to the local Maven repository.", DTask) val deliverConfiguration = TaskKey[DeliverConfiguration]("deliver-configuration", "Configuration for generating the finished Ivy file for publishing.", DTask) val deliverLocalConfiguration = TaskKey[DeliverConfiguration]("deliver-local-configuration", "Configuration for generating the finished Ivy file for local publishing.", DTask) val makePomConfiguration = SettingKey[MakePomConfiguration]("make-pom-configuration", "Configuration for generating a pom.", DSetting) @@ -259,7 +260,8 @@ object Keys val deliver = TaskKey[File]("deliver", "Generates the Ivy file for publishing to a repository.", BTask) val deliverLocal = TaskKey[File]("deliver-local", "Generates the Ivy file for publishing to the local repository.", BTask) val publish = TaskKey[Unit]("publish", "Publishes artifacts to a repository.", APlusTask) - val publishLocal = TaskKey[Unit]("publish-local", "Publishes artifacts to the local repository.", APlusTask) + val publishLocal = TaskKey[Unit]("publish-local", "Publishes artifacts to the local Ivy repository.", APlusTask) + val publishM2 = TaskKey[Unit]("publish-m2", "Publishes artifacts to the local Maven repository.", ATask) val pomExtra = SettingKey[NodeSeq]("pom-extra", "Extra XML to insert into the generated POM.", BSetting) val pomPostProcess = SettingKey[XNode => XNode]("pom-post-process", "Transforms the generated POM.", CSetting)