individual settings for make-pom-configuration

This commit is contained in:
Mark Harrah 2011-04-21 20:49:38 -04:00
parent 0bea6c2184
commit a601e8ea09
2 changed files with 12 additions and 5 deletions

View File

@ -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.")

View File

@ -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.")