diff --git a/ivy/IvyInterface.scala b/ivy/IvyInterface.scala
index 5b90fd141..be3d2cd3d 100644
--- a/ivy/IvyInterface.scala
+++ b/ivy/IvyInterface.scala
@@ -17,9 +17,9 @@ final case class ModuleID(organization: String, name: String, revision: String,
(if(extraAttributes.isEmpty) "" else " " + extraString)
def extraString = extraAttributes.map { case (k,v) => k + "=" + v } mkString("(",", ",")")
- @deprecated("Use the variant accepting a CrossVersion value constructed by a member of the CrossVersion object.", "0.12.0")
+ @deprecated("Use `cross(CrossVersion)`, the variant accepting a CrossVersion value constructed by a member of the CrossVersion object instead.", "0.12.0")
def cross(v: Boolean): ModuleID = cross(if(v) CrossVersion.binary else CrossVersion.Disabled)
- @deprecated("Use the variant accepting a CrossVersion value constructed by a member of the CrossVersion object.", "0.12.0")
+ @deprecated("Use `cross(CrossVersion)`, the variant accepting a CrossVersion value constructed by a member of the CrossVersion object instead.", "0.12.0")
def cross(v: Boolean, verRemap: String => String): ModuleID = cross(if(v) CrossVersion.binaryMapped(verRemap) else CrossVersion.Disabled)
def cross(v: CrossVersion): ModuleID = copy(crossVersion = v)
@@ -49,13 +49,15 @@ object ModuleID
if(key.startsWith("e:")) (key, value) else ("e:" + key, value)
}
/** Additional information about a project module */
-case class ModuleInfo(nameFormal: String, description: String = "", homepage: Option[URL] = None, startYear: Option[Int] = None, licenses: Seq[(String, URL)] = Nil, organizationName: String = "", organizationHomepage: Option[URL] = None)
+case class ModuleInfo(nameFormal: String, description: String = "", homepage: Option[URL] = None, startYear: Option[Int] = None, licenses: Seq[(String, URL)] = Nil, organizationName: String = "", organizationHomepage: Option[URL] = None, scmInfo: Option[ScmInfo] = None)
{
def formally(name: String) = copy(nameFormal = name)
def describing(desc: String, home: Option[URL]) = copy(description = desc, homepage = home)
def licensed(lics: (String, URL)*) = copy(licenses = lics)
def organization(name: String, home: Option[URL]) = copy(organizationName = name, organizationHomepage = home)
}
+/** Basic SCM information for a project module */
+case class ScmInfo(browseUrl: URL, connection: String, devConnection: Option[String] = None)
/** Rule to exclude unwanted dependencies pulled in transitively by a module. */
case class ExclusionRule(organization: String = "*", name: String = "*", artifact: String = "*", configurations: Seq[String] = Nil)
sealed trait Resolver
@@ -428,7 +430,7 @@ object Artifact
}
def artifactName(scalaVersion: ScalaVersion, module: ModuleID, artifact: Artifact): String =
{
- import artifact._
+ import artifact._
val classifierStr = classifier match { case None => ""; case Some(c) => "-" + c }
val cross = CrossVersion(module.crossVersion, scalaVersion.full, scalaVersion.binary)
val base = CrossVersion.applyCross(artifact.name, cross)
diff --git a/ivy/MakePom.scala b/ivy/MakePom.scala
index e2b5f1778..31a83a705 100644
--- a/ivy/MakePom.scala
+++ b/ivy/MakePom.scala
@@ -44,6 +44,7 @@ class MakePom(val log: Logger)
{moduleInfo.nameFormal}
{ makeStartYear(moduleInfo) }
{ makeOrganization(moduleInfo) }
+ { makeScmInfo(moduleInfo) }
{ extra }
{
val deps = depsInConfs(module, configurations)
@@ -83,6 +84,21 @@ class MakePom(val log: Logger)
}}
}
+ def makeScmInfo(moduleInfo: ModuleInfo): NodeSeq =
+ {
+ moduleInfo.scmInfo match {
+ case Some(s) =>
+
+ {s.browseUrl}
+ {s.connection}
+ {s.devConnection match {
+ case Some(d) => {d}
+ case _ => NodeSeq.Empty
+ }}
+
+ case _ => NodeSeq.Empty
+ }
+ }
def makeProperties(module: ModuleDescriptor, dependencies: Seq[DependencyDescriptor]): NodeSeq =
{
val extra = IvySbt.getExtraAttributes(module)