diff --git a/main/Defaults.scala b/main/Defaults.scala index 7b5091f8a..f799c594f 100644 --- a/main/Defaults.scala +++ b/main/Defaults.scala @@ -67,7 +67,10 @@ object Defaults artifactClassifier :== None, artifactClassifier in packageSrc :== Some(SourceClassifier), artifactClassifier in packageDoc :== Some(DocClassifier), - checksums :== IvySbt.DefaultChecksums + checksums :== IvySbt.DefaultChecksums, + pomExtra := NodeSeq.Empty, + pomPostProcess := idFun, + pomIncludeRepository := Classpaths.defaultRepositoryFilter )) def projectCore: Seq[Setting[_]] = Seq( name <<= thisProject(_.id), @@ -533,7 +536,9 @@ object Classpaths (project.configurations ++ project.configurations.map(internalMap) ++ (if(auto) CompilerPlugin :: Nil else Nil)).distinct }, moduleSettings <<= moduleSettings0, - makePomConfiguration <<= (artifactPath in makePom)(file => makePomConfigurationTask(file)), + makePomConfiguration <<= (artifactPath in makePom, pomExtra, pomPostProcess, pomIncludeRepository) { + (file, extra, process, include) => new MakePomConfiguration(file, None, extra, process, include) + }, deliverLocalConfiguration <<= (crossTarget, ivyLoggingLevel) map { (outDir, level) => deliverConfig( outDir, logging = level ) }, deliverConfiguration <<= deliverLocalConfiguration.identity, publishConfiguration <<= (packagedArtifacts, publishTo, publishMavenStyle, deliver, ivyLoggingLevel) map { (arts, publishTo, mavenStyle, ivyFile, level) => @@ -610,8 +615,6 @@ object Classpaths /*} f(module.owner.configuration :+: module.moduleSettings :+: config :+: HNil)*/ }*/ - def makePomConfigurationTask(file: File, configurations: Option[Iterable[Configuration]] = None, extra: NodeSeq = NodeSeq.Empty, process: XNode => XNode = n => n, filterRepositories: MavenRepository => Boolean = defaultRepositoryFilter) = - new MakePomConfiguration(file, configurations, extra, process, filterRepositories) def defaultRepositoryFilter = (repo: MavenRepository) => !repo.root.startsWith("file:") def getPublishTo(repo: Option[Resolver]): Resolver = repo getOrElse error("Repository for publishing is not specified.") diff --git a/main/Keys.scala b/main/Keys.scala index d3f2f1161..6128d2cff 100644 --- a/main/Keys.scala +++ b/main/Keys.scala @@ -8,7 +8,7 @@ package sbt import complete._ import inc.Analysis import std.TaskExtra._ - import scala.xml.NodeSeq + import scala.xml.{Node => XNode, NodeSeq} import org.apache.ivy.core.module.{descriptor, id} import descriptor.ModuleDescriptor, id.ModuleRevisionId import org.scalatools.testing.Framework @@ -187,6 +187,10 @@ object Keys val publish = TaskKey[Unit]("publish", "Publishes artifacts to a repository.") val publishLocal = TaskKey[Unit]("publish-local", "Publishes artifacts to the local repository.") + val pomExtra = SettingKey[NodeSeq]("pom-extra", "Extra XML to insert into the generated POM.") + val pomPostProcess = SettingKey[XNode => XNode]("pom-post-process", "Transforms the generated POM.") + val pomIncludeRepository = SettingKey[MavenRepository => Boolean]("pom-include-repository", "Selects repositories to include in the generated POM.") + val moduleID = SettingKey[String]("module-id", "The name of the current module, used for dependency management.") val version = SettingKey[String]("version", "The version/revision of the current module.") val projectID = SettingKey[ModuleID]("project-id", "The dependency management descriptor for the current module.")