Add project-level exclusions in the POM.

Closes #1877.
This commit is contained in:
Dale Wijnand 2015-05-28 08:14:08 +01:00
parent 7c888aab38
commit 4d7184d8c3
1 changed files with 12 additions and 12 deletions

View File

@ -104,7 +104,7 @@ class MakePom(val log: Logger) {
{ {
val deps = depsInConfs(module, configurations) val deps = depsInConfs(module, configurations)
makeProperties(module, deps) ++ makeProperties(module, deps) ++
makeDependencies(deps, includeTypes) makeDependencies(deps, includeTypes, module.getAllExcludeRules)
} }
{ makeRepositories(ivy.getSettings, allRepositories, filterRepositories) } { makeRepositories(ivy.getSettings, allRepositories, filterRepositories) }
</project>) </project>)
@ -220,15 +220,15 @@ class MakePom(val log: Logger) {
} }
val IgnoreTypes: Set[String] = Set(Artifact.SourceType, Artifact.DocType, Artifact.PomType) val IgnoreTypes: Set[String] = Set(Artifact.SourceType, Artifact.DocType, Artifact.PomType)
def makeDependencies(dependencies: Seq[DependencyDescriptor], includeTypes: Set[String]): NodeSeq = def makeDependencies(dependencies: Seq[DependencyDescriptor], includeTypes: Set[String], excludes: Seq[ExcludeRule]): NodeSeq =
if (dependencies.isEmpty) if (dependencies.isEmpty)
NodeSeq.Empty NodeSeq.Empty
else else
<dependencies> <dependencies>
{ dependencies.map(makeDependency(_, includeTypes)) } { dependencies.map(makeDependency(_, includeTypes, excludes)) }
</dependencies> </dependencies>
def makeDependency(dependency: DependencyDescriptor, includeTypes: Set[String]): NodeSeq = def makeDependency(dependency: DependencyDescriptor, includeTypes: Set[String], excludes: Seq[ExcludeRule]): NodeSeq =
{ {
val artifacts = dependency.getAllDependencyArtifacts val artifacts = dependency.getAllDependencyArtifacts
val includeArtifacts = artifacts.filter(d => includeTypes(d.getType)) val includeArtifacts = artifacts.filter(d => includeTypes(d.getType))
@ -236,15 +236,15 @@ class MakePom(val log: Logger) {
val configs = dependency.getModuleConfigurations val configs = dependency.getModuleConfigurations
if (configs.filterNot(Set("sources","docs")).nonEmpty) { if (configs.filterNot(Set("sources","docs")).nonEmpty) {
val (scope, optional) = getScopeAndOptional(dependency.getModuleConfigurations) val (scope, optional) = getScopeAndOptional(dependency.getModuleConfigurations)
makeDependencyElem(dependency, scope, optional, None, None) makeDependencyElem(dependency, scope, optional, None, None, excludes)
} else NodeSeq.Empty } else NodeSeq.Empty
} else if (includeArtifacts.isEmpty) } else if (includeArtifacts.isEmpty)
NodeSeq.Empty NodeSeq.Empty
else else
NodeSeq.fromSeq(artifacts.flatMap(a => makeDependencyElem(dependency, a))) NodeSeq.fromSeq(artifacts.flatMap(a => makeDependencyElem(dependency, a, excludes)))
} }
def makeDependencyElem(dependency: DependencyDescriptor, artifact: DependencyArtifactDescriptor): Option[Elem] = def makeDependencyElem(dependency: DependencyDescriptor, artifact: DependencyArtifactDescriptor, excludes: Seq[ExcludeRule]): Option[Elem] =
{ {
val configs = artifact.getConfigurations.toList match { val configs = artifact.getConfigurations.toList match {
case Nil | "*" :: Nil => dependency.getModuleConfigurations case Nil | "*" :: Nil => dependency.getModuleConfigurations
@ -258,10 +258,10 @@ class MakePom(val log: Logger) {
case (Some(c), Some(tpe)) if Artifact.classifierType(c) == tpe => None case (Some(c), Some(tpe)) if Artifact.classifierType(c) == tpe => None
case _ => baseType case _ => baseType
} }
Some(makeDependencyElem(dependency, scope, optional, classifier, tpe)) Some(makeDependencyElem(dependency, scope, optional, classifier, tpe, excludes))
} else None } else None
} }
def makeDependencyElem(dependency: DependencyDescriptor, scope: Option[String], optional: Boolean, classifier: Option[String], tpe: Option[String]): Elem = def makeDependencyElem(dependency: DependencyDescriptor, scope: Option[String], optional: Boolean, classifier: Option[String], tpe: Option[String], excludes: Seq[ExcludeRule]): Elem =
{ {
val mrid = dependency.getDependencyRevisionId val mrid = dependency.getDependencyRevisionId
<dependency> <dependency>
@ -272,7 +272,7 @@ class MakePom(val log: Logger) {
{ optionalElem(optional) } { optionalElem(optional) }
{ classifierElem(classifier) } { classifierElem(classifier) }
{ typeElem(tpe) } { typeElem(tpe) }
{ exclusions(dependency) } { exclusions(dependency, excludes) }
</dependency> </dependency>
} }
@ -322,9 +322,9 @@ class MakePom(val log: Logger) {
(scope, opt.nonEmpty) (scope, opt.nonEmpty)
} }
def exclusions(dependency: DependencyDescriptor): NodeSeq = def exclusions(dependency: DependencyDescriptor, excludes: Seq[ExcludeRule]): NodeSeq =
{ {
val excl = dependency.getExcludeRules(dependency.getModuleConfigurations) val excl = dependency.getExcludeRules(dependency.getModuleConfigurations) ++ excludes
val (warns, excls) = IvyUtil.separate(excl.map(makeExclusion)) val (warns, excls) = IvyUtil.separate(excl.map(makeExclusion))
if (warns.nonEmpty) log.warn(warns.mkString(IO.Newline)) if (warns.nonEmpty) log.warn(warns.mkString(IO.Newline))
if (excls.nonEmpty) <exclusions>{ excls }</exclusions> if (excls.nonEmpty) <exclusions>{ excls }</exclusions>