mirror of https://github.com/sbt/sbt.git
Merge pull request #2127 from sbt/wip/warn-on-intransitive-pom
Add warning to MakePom for intransitive dependencies.
This commit is contained in:
commit
abb4682cc7
|
|
@ -236,21 +236,30 @@ class MakePom(val log: Logger) {
|
||||||
def makeDependency(dependency: DependencyDescriptor, includeTypes: Set[String]): NodeSeq =
|
def makeDependency(dependency: DependencyDescriptor, includeTypes: Set[String]): NodeSeq =
|
||||||
makeDependency(dependency, includeTypes, Nil)
|
makeDependency(dependency, includeTypes, Nil)
|
||||||
|
|
||||||
def makeDependency(dependency: DependencyDescriptor, includeTypes: Set[String], excludes: Seq[ExcludeRule]): NodeSeq =
|
def makeDependency(dependency: DependencyDescriptor, includeTypes: Set[String], excludes: Seq[ExcludeRule]): NodeSeq = {
|
||||||
{
|
def warnIntransitve(): Unit =
|
||||||
val artifacts = dependency.getAllDependencyArtifacts
|
if (!dependency.isTransitive)
|
||||||
val includeArtifacts = artifacts.filter(d => includeTypes(d.getType))
|
log.warn(
|
||||||
if (artifacts.isEmpty) {
|
s"""Translating intransitive dependency (${dependency.getDependencyId}) into pom.xml, but maven does not support intransitive dependencies.
|
||||||
val configs = dependency.getModuleConfigurations
|
| Please use exclusions instead so transitive dependencies will be correctly excluded in dependent projects.
|
||||||
if (configs.filterNot(Set("sources", "docs")).nonEmpty) {
|
""".stripMargin)
|
||||||
val (scope, optional) = getScopeAndOptional(dependency.getModuleConfigurations)
|
else ()
|
||||||
makeDependencyElem(dependency, scope, optional, None, None, excludes)
|
val artifacts = dependency.getAllDependencyArtifacts
|
||||||
} else NodeSeq.Empty
|
val includeArtifacts = artifacts.filter(d => includeTypes(d.getType))
|
||||||
} else if (includeArtifacts.isEmpty)
|
if (artifacts.isEmpty) {
|
||||||
NodeSeq.Empty
|
val configs = dependency.getModuleConfigurations
|
||||||
else
|
if (configs.filterNot(Set("sources", "docs")).nonEmpty) {
|
||||||
NodeSeq.fromSeq(artifacts.flatMap(a => makeDependencyElem(dependency, a, excludes)))
|
warnIntransitve()
|
||||||
|
val (scope, optional) = getScopeAndOptional(dependency.getModuleConfigurations)
|
||||||
|
makeDependencyElem(dependency, scope, optional, None, None, excludes)
|
||||||
|
} else NodeSeq.Empty
|
||||||
|
} else if (includeArtifacts.isEmpty) {
|
||||||
|
NodeSeq.Empty
|
||||||
|
} else {
|
||||||
|
warnIntransitve()
|
||||||
|
NodeSeq.fromSeq(artifacts.flatMap(a => makeDependencyElem(dependency, a, excludes)))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@deprecated("Use `makeDependencyElem` variant which takes excludes", "0.13.9")
|
@deprecated("Use `makeDependencyElem` variant which takes excludes", "0.13.9")
|
||||||
def makeDependencyElem(dependency: DependencyDescriptor, artifact: DependencyArtifactDescriptor): Option[Elem] =
|
def makeDependencyElem(dependency: DependencyDescriptor, artifact: DependencyArtifactDescriptor): Option[Elem] =
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue