mirror of https://github.com/sbt/sbt.git
add pomAllRepositories option to include module configuration resolvers in pom. closes #39
This commit is contained in:
parent
4af89d51e1
commit
63857ddd16
|
|
@ -26,7 +26,7 @@ final class PublishConfiguration(val ivyFile: Option[File], val resolverName: St
|
||||||
|
|
||||||
final class UpdateConfiguration(val retrieve: Option[RetrieveConfiguration], val missingOk: Boolean, val logging: UpdateLogging.Value)
|
final class UpdateConfiguration(val retrieve: Option[RetrieveConfiguration], val missingOk: Boolean, val logging: UpdateLogging.Value)
|
||||||
final class RetrieveConfiguration(val retrieveDirectory: File, val outputPattern: String)
|
final class RetrieveConfiguration(val retrieveDirectory: File, val outputPattern: String)
|
||||||
final case class MakePomConfiguration(file: File, configurations: Option[Iterable[Configuration]] = None, extra: NodeSeq = NodeSeq.Empty, process: XNode => XNode = n => n, filterRepositories: MavenRepository => Boolean = _ => true)
|
final case class MakePomConfiguration(file: File, configurations: Option[Iterable[Configuration]] = None, extra: NodeSeq = NodeSeq.Empty, process: XNode => XNode = n => n, filterRepositories: MavenRepository => Boolean = _ => true, allRepositories: Boolean)
|
||||||
|
|
||||||
/** Configures logging during an 'update'. `level` determines the amount of other information logged.
|
/** Configures logging during an 'update'. `level` determines the amount of other information logged.
|
||||||
* `Full` is the default and logs the most.
|
* `Full` is the default and logs the most.
|
||||||
|
|
@ -63,9 +63,9 @@ object IvyActions
|
||||||
/** Creates a Maven pom from the given Ivy configuration*/
|
/** Creates a Maven pom from the given Ivy configuration*/
|
||||||
def makePom(module: IvySbt#Module, configuration: MakePomConfiguration, log: Logger)
|
def makePom(module: IvySbt#Module, configuration: MakePomConfiguration, log: Logger)
|
||||||
{
|
{
|
||||||
import configuration.{configurations, extra, file, filterRepositories, process}
|
import configuration.{allRepositories, configurations, extra, file, filterRepositories, process}
|
||||||
module.withModule(log) { (ivy, md, default) =>
|
module.withModule(log) { (ivy, md, default) =>
|
||||||
(new MakePom).write(ivy, md, configurations, extra, process, filterRepositories, file)
|
(new MakePom).write(ivy, md, configurations, extra, process, filterRepositories, allRepositories, file)
|
||||||
log.info("Wrote " + file.getAbsolutePath)
|
log.info("Wrote " + file.getAbsolutePath)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,8 @@ import plugins.resolver.{ChainResolver, DependencyResolver, IBiblioResolver}
|
||||||
class MakePom
|
class MakePom
|
||||||
{
|
{
|
||||||
def encoding = "UTF-8"
|
def encoding = "UTF-8"
|
||||||
def write(ivy: Ivy, module: ModuleDescriptor, configurations: Option[Iterable[Configuration]], extra: NodeSeq, process: XNode => XNode, filterRepositories: MavenRepository => Boolean, output: File): Unit =
|
def write(ivy: Ivy, module: ModuleDescriptor, configurations: Option[Iterable[Configuration]], extra: NodeSeq, process: XNode => XNode, filterRepositories: MavenRepository => Boolean, allRepositories: Boolean, output: File): Unit =
|
||||||
write(process(toPom(ivy, module, configurations, extra, filterRepositories)), output)
|
write(process(toPom(ivy, module, configurations, extra, filterRepositories, allRepositories)), output)
|
||||||
def write(node: XNode, output: File): Unit = write(toString(node), output)
|
def write(node: XNode, output: File): Unit = write(toString(node), output)
|
||||||
def write(xmlString: String, output: File)
|
def write(xmlString: String, output: File)
|
||||||
{
|
{
|
||||||
|
|
@ -37,13 +37,13 @@ class MakePom
|
||||||
}
|
}
|
||||||
|
|
||||||
def toString(node: XNode): String = new PrettyPrinter(1000, 4).format(node)
|
def toString(node: XNode): String = new PrettyPrinter(1000, 4).format(node)
|
||||||
def toPom(ivy: Ivy, module: ModuleDescriptor, configurations: Option[Iterable[Configuration]], extra: NodeSeq, filterRepositories: MavenRepository => Boolean): XNode =
|
def toPom(ivy: Ivy, module: ModuleDescriptor, configurations: Option[Iterable[Configuration]], extra: NodeSeq, filterRepositories: MavenRepository => Boolean, allRepositories: Boolean): XNode =
|
||||||
(<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
(<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
{ makeModuleID(module) }
|
{ makeModuleID(module) }
|
||||||
{ extra }
|
{ extra }
|
||||||
{ makeDependencies(module, configurations) }
|
{ makeDependencies(module, configurations) }
|
||||||
{ makeRepositories(ivy.getSettings, filterRepositories) }
|
{ makeRepositories(ivy.getSettings, allRepositories, filterRepositories) }
|
||||||
</project>)
|
</project>)
|
||||||
|
|
||||||
def makeModuleID(module: ModuleDescriptor): NodeSeq =
|
def makeModuleID(module: ModuleDescriptor): NodeSeq =
|
||||||
|
|
@ -126,10 +126,10 @@ class MakePom
|
||||||
def isOptional(confs: Array[String]) = confs.isEmpty || (confs.length == 1 && confs(0) == Configurations.Optional.name)
|
def isOptional(confs: Array[String]) = confs.isEmpty || (confs.length == 1 && confs(0) == Configurations.Optional.name)
|
||||||
|
|
||||||
|
|
||||||
def makeRepositories(settings: IvySettings, filterRepositories: MavenRepository => Boolean) =
|
def makeRepositories(settings: IvySettings, includeAll: Boolean, filterRepositories: MavenRepository => Boolean) =
|
||||||
{
|
{
|
||||||
class MavenRepo(name: String, snapshots: Boolean, releases: Boolean)
|
class MavenRepo(name: String, snapshots: Boolean, releases: Boolean)
|
||||||
val repositories = resolvers(settings.getDefaultResolver)
|
val repositories = if(includeAll) allResolvers(settings) else resolvers(settings.getDefaultResolver)
|
||||||
val mavenRepositories =
|
val mavenRepositories =
|
||||||
repositories.flatMap {
|
repositories.flatMap {
|
||||||
case m: IBiblioResolver if m.isM2compatible && m.getRoot != IBiblioResolver.DEFAULT_M2_ROOT =>
|
case m: IBiblioResolver if m.isM2compatible && m.getRoot != IBiblioResolver.DEFAULT_M2_ROOT =>
|
||||||
|
|
@ -139,6 +139,7 @@ class MakePom
|
||||||
val repositoryElements = mavenRepositories.filter(filterRepositories).map(mavenRepository)
|
val repositoryElements = mavenRepositories.filter(filterRepositories).map(mavenRepository)
|
||||||
if(repositoryElements.isEmpty) repositoryElements else <repositories>{repositoryElements}</repositories>
|
if(repositoryElements.isEmpty) repositoryElements else <repositories>{repositoryElements}</repositories>
|
||||||
}
|
}
|
||||||
|
def allResolvers(settings: IvySettings): Seq[DependencyResolver] = flatten(castResolvers(settings.getResolvers)).distinct
|
||||||
def flatten(rs: Seq[DependencyResolver]): Seq[DependencyResolver] = if(rs eq null) Nil else rs.flatMap(resolvers)
|
def flatten(rs: Seq[DependencyResolver]): Seq[DependencyResolver] = if(rs eq null) Nil else rs.flatMap(resolvers)
|
||||||
def resolvers(r: DependencyResolver): Seq[DependencyResolver] =
|
def resolvers(r: DependencyResolver): Seq[DependencyResolver] =
|
||||||
r match { case c: ChainResolver => flatten(castResolvers(c.getResolvers)); case _ => r :: Nil }
|
r match { case c: ChainResolver => flatten(castResolvers(c.getResolvers)); case _ => r :: Nil }
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ object Defaults extends BuildCommon
|
||||||
javaHome :== None,
|
javaHome :== None,
|
||||||
version :== "0.1",
|
version :== "0.1",
|
||||||
outputStrategy :== None,
|
outputStrategy :== None,
|
||||||
exportJars := false,
|
exportJars :== false,
|
||||||
fork :== false,
|
fork :== false,
|
||||||
javaOptions :== Nil,
|
javaOptions :== Nil,
|
||||||
sbtPlugin :== false,
|
sbtPlugin :== false,
|
||||||
|
|
@ -81,9 +81,10 @@ object Defaults extends BuildCommon
|
||||||
artifactClassifier in packageSrc :== Some(SourceClassifier),
|
artifactClassifier in packageSrc :== Some(SourceClassifier),
|
||||||
artifactClassifier in packageDoc :== Some(DocClassifier),
|
artifactClassifier in packageDoc :== Some(DocClassifier),
|
||||||
checksums :== IvySbt.DefaultChecksums,
|
checksums :== IvySbt.DefaultChecksums,
|
||||||
pomExtra := NodeSeq.Empty,
|
pomExtra :== NodeSeq.Empty,
|
||||||
pomPostProcess := idFun,
|
pomPostProcess :== idFun,
|
||||||
pomIncludeRepository := Classpaths.defaultRepositoryFilter
|
pomAllRepositories :== false,
|
||||||
|
pomIncludeRepository :== Classpaths.defaultRepositoryFilter
|
||||||
))
|
))
|
||||||
def projectCore: Seq[Setting[_]] = Seq(
|
def projectCore: Seq[Setting[_]] = Seq(
|
||||||
name <<= thisProject(_.id),
|
name <<= thisProject(_.id),
|
||||||
|
|
@ -608,8 +609,8 @@ object Classpaths
|
||||||
(project.configurations ++ project.configurations.map(internalMap) ++ (if(auto) CompilerPlugin :: Nil else Nil)).distinct
|
(project.configurations ++ project.configurations.map(internalMap) ++ (if(auto) CompilerPlugin :: Nil else Nil)).distinct
|
||||||
},
|
},
|
||||||
moduleSettings <<= moduleSettings0,
|
moduleSettings <<= moduleSettings0,
|
||||||
makePomConfiguration <<= (artifactPath in makePom, pomExtra, pomPostProcess, pomIncludeRepository) {
|
makePomConfiguration <<= (artifactPath in makePom, pomExtra, pomPostProcess, pomIncludeRepository, pomAllRepositories) {
|
||||||
(file, extra, process, include) => new MakePomConfiguration(file, None, extra, process, include)
|
(file, extra, process, include, all) => new MakePomConfiguration(file, None, extra, process, include, all)
|
||||||
},
|
},
|
||||||
deliverLocalConfiguration <<= (crossTarget, ivyLoggingLevel) map { (outDir, level) => deliverConfig( outDir, logging = level ) },
|
deliverLocalConfiguration <<= (crossTarget, ivyLoggingLevel) map { (outDir, level) => deliverConfig( outDir, logging = level ) },
|
||||||
deliverConfiguration <<= deliverLocalConfiguration.identity,
|
deliverConfiguration <<= deliverLocalConfiguration.identity,
|
||||||
|
|
|
||||||
|
|
@ -216,6 +216,7 @@ object Keys
|
||||||
val pomExtra = SettingKey[NodeSeq]("pom-extra", "Extra XML to insert into the generated POM.")
|
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 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 pomIncludeRepository = SettingKey[MavenRepository => Boolean]("pom-include-repository", "Selects repositories to include in the generated POM.")
|
||||||
|
val pomAllRepositories = SettingKey[Boolean]("pom-all-repositories", "If true, includes repositories used in module configurations in the pom repositories section. If false, only the common repositories are included.")
|
||||||
|
|
||||||
val moduleName = SettingKey[String]("module-name", "The name of the current module, used for dependency management.")
|
val moduleName = SettingKey[String]("module-name", "The name of the current module, used for dependency management.")
|
||||||
val version = SettingKey[String]("version", "The version/revision of the current module.")
|
val version = SettingKey[String]("version", "The version/revision of the current module.")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue