Merge pull request #2027 from cunei/wip-fix-2001

Do not emit in the pom dependencies that are only sources or docs
This commit is contained in:
Josh Suereth 2015-05-27 18:43:50 -04:00
commit e05b747fdd
2 changed files with 38 additions and 12 deletions

View File

@ -233,28 +233,33 @@ class MakePom(val log: Logger) {
val artifacts = dependency.getAllDependencyArtifacts
val includeArtifacts = artifacts.filter(d => includeTypes(d.getType))
if (artifacts.isEmpty) {
val (scope, optional) = getScopeAndOptional(dependency.getModuleConfigurations)
makeDependencyElem(dependency, scope, optional, None, None)
val configs = dependency.getModuleConfigurations
if (configs.filterNot(Set("sources","docs")).nonEmpty) {
val (scope, optional) = getScopeAndOptional(dependency.getModuleConfigurations)
makeDependencyElem(dependency, scope, optional, None, None)
} else NodeSeq.Empty
} else if (includeArtifacts.isEmpty)
NodeSeq.Empty
else
NodeSeq.fromSeq(artifacts.map(a => makeDependencyElem(dependency, a)))
NodeSeq.fromSeq(artifacts.flatMap(a => makeDependencyElem(dependency, a)))
}
def makeDependencyElem(dependency: DependencyDescriptor, artifact: DependencyArtifactDescriptor): Elem =
def makeDependencyElem(dependency: DependencyDescriptor, artifact: DependencyArtifactDescriptor): Option[Elem] =
{
val configs = artifact.getConfigurations.toList match {
case Nil | "*" :: Nil => dependency.getModuleConfigurations
case x => x.toArray
}
val (scope, optional) = getScopeAndOptional(configs)
val classifier = artifactClassifier(artifact)
val baseType = artifactType(artifact)
val tpe = (classifier, baseType) match {
case (Some(c), Some(tpe)) if Artifact.classifierType(c) == tpe => None
case _ => baseType
}
makeDependencyElem(dependency, scope, optional, classifier, tpe)
if (configs.filterNot(Set("sources","docs")).nonEmpty) {
val (scope, optional) = getScopeAndOptional(configs)
val classifier = artifactClassifier(artifact)
val baseType = artifactType(artifact)
val tpe = (classifier, baseType) match {
case (Some(c), Some(tpe)) if Artifact.classifierType(c) == tpe => None
case _ => baseType
}
Some(makeDependencyElem(dependency, scope, optional, classifier, tpe))
} else None
}
def makeDependencyElem(dependency: DependencyDescriptor, scope: Option[String], optional: Boolean, classifier: Option[String], tpe: Option[String]): Elem =
{

View File

@ -0,0 +1,21 @@
[@cunei]: http://github.com/cunei
[2001]: https://github.com/sbt/sbt/issues/2001
[2027]: https://github.com/sbt/sbt/pull/2027
### Fixes with compatibility implications
- Starting with 0.13.9, the generated POM files no longer include dependencies on source or javadoc jars
obtained via withSources() or withJavadoc()
### Improvements
### Bug fixes
### POM files no longer include certain source and javadoc jars
When declaring library dependencies using the withSources() or withJavadoc() options, sbt was also including
in the pom file, as dependencies, the source or javadoc jars using the default Maven scope. Such dependencies
might be erroneously processed as they were regular jars by automated tools
[#2001][2001]/[#2027][2027] by [@cunei][@cunei]