Always try to get artifacts corresponding to packaging

This commit is contained in:
Alexandre Archambault 2017-07-22 17:29:25 +02:00
parent d4cb232e65
commit bddf67cc17
5 changed files with 84 additions and 32 deletions

View File

@ -64,6 +64,9 @@ final case class Attributes(
) { ) {
def publication(name: String, ext: String): Publication = def publication(name: String, ext: String): Publication =
Publication(name, `type`, ext, classifier) Publication(name, `type`, ext, classifier)
def isEmpty: Boolean =
`type`.isEmpty && classifier.isEmpty
} }
final case class Project( final case class Project(

View File

@ -19,8 +19,9 @@ final case class MavenSource(
overrideClassifiers: Option[Seq[String]] overrideClassifiers: Option[Seq[String]]
): Seq[Artifact] = { ): Seq[Artifact] = {
val packagingTpeMap = project.packagingOpt val packagingOpt = project.packagingOpt.filter(_ != Pom.relocatedPackaging)
.filter(_ != Pom.relocatedPackaging)
val packagingTpeMap = packagingOpt
.map { packaging => .map { packaging =>
(MavenSource.typeDefaultClassifier(packaging), MavenSource.typeExtension(packaging)) -> packaging (MavenSource.typeDefaultClassifier(packaging), MavenSource.typeExtension(packaging)) -> packaging
} }
@ -67,7 +68,18 @@ final case class MavenSource(
) )
} }
lazy val defaultPublication = { lazy val defaultPublications = {
val packagingPublicationOpt = packagingOpt
.filter(_ => dependency.attributes.isEmpty)
.map { packaging =>
Publication(
dependency.module.name,
packaging,
MavenSource.typeExtension(packaging),
MavenSource.typeDefaultClassifier(packaging)
)
}
val type0 = if (dependency.attributes.`type`.isEmpty) "jar" else dependency.attributes.`type` val type0 = if (dependency.attributes.`type`.isEmpty) "jar" else dependency.attributes.`type`
@ -84,41 +96,41 @@ final case class MavenSource(
MavenSource.classifierExtensionDefaultTypeOpt(classifier, ext).getOrElse(ext) MavenSource.classifierExtensionDefaultTypeOpt(classifier, ext).getOrElse(ext)
) )
Publication( val pubs = packagingPublicationOpt.toSeq :+
dependency.module.name, Publication(
tpe, dependency.module.name,
ext, tpe,
classifier ext,
) classifier
)
pubs.distinct
} }
overrideClassifiers match { overrideClassifiers
case Some(classifiers) => .fold(defaultPublications) { classifiers =>
classifiers.flatMap { classifier =>
classifiers if (classifier == dependency.attributes.classifier)
.map { classifier => defaultPublications
if (classifier == dependency.attributes.classifier) else {
defaultPublication val ext = "jar"
else { val tpe = packagingTpeMap.getOrElse(
val ext = "jar" (classifier, ext),
val tpe = packagingTpeMap.getOrElse( MavenSource.classifierExtensionDefaultTypeOpt(classifier, ext).getOrElse(ext)
(classifier, ext), )
MavenSource.classifierExtensionDefaultTypeOpt(classifier, ext).getOrElse(ext)
)
Seq(
Publication( Publication(
dependency.module.name, dependency.module.name,
tpe, tpe,
ext, ext,
classifier classifier
) )
} )
} }
.map(artifactWithExtra) }
}
case None => .map(artifactWithExtra)
Seq(defaultPublication).map(artifactWithExtra)
}
} }
private val types = Map("sha1" -> "SHA-1", "md5" -> "MD5", "asc" -> "sig") private val types = Map("sha1" -> "SHA-1", "md5" -> "MD5", "asc" -> "sig")
@ -290,14 +302,14 @@ final case class MavenSource(
} }
val defaultPublications = artifactsUnknownPublications(dependency, project, overrideClassifiers) val defaultPublications = artifactsUnknownPublications(dependency, project, overrideClassifiers)
.map(makeOptional)
if (project.publications.isEmpty) if (project.publications.isEmpty)
defaultPublications defaultPublications
else { else {
val listedPublications = artifactsKnownPublications(dependency, project, overrideClassifiers) val listedPublications = artifactsKnownPublications(dependency, project, overrideClassifiers)
val listedUrls = listedPublications.map(_.url).toSet val listedUrls = listedPublications.map(_.url).toSet
val defaultPublications0 = defaultPublications.map(makeOptional) val defaultPublicationsMap = defaultPublications
val defaultPublicationsMap = defaultPublications0
.map(a => a.url -> a) .map(a => a.url -> a)
.toMap .toMap
val listedPublications0 = listedPublications.map { a => val listedPublications0 = listedPublications.map { a =>
@ -305,7 +317,7 @@ final case class MavenSource(
.get(a.url) .get(a.url)
.fold(a)(merge(a, _)) .fold(a)(merge(a, _))
} }
val extraPublications = defaultPublications0 val extraPublications = defaultPublications
.filter(a => !listedUrls(a.url)) .filter(a => !listedUrls(a.url))
listedPublications0 ++ extraPublications listedPublications0 ++ extraPublications

@ -1 +1 @@
Subproject commit 93eccec4ffd1719586b6f1e1dddefcbea6722e7d Subproject commit 6b2578a25220930e60b505b90e636092757d6397

View File

@ -0,0 +1,10 @@
android.arch.core:core:1.0.0-alpha3:compile
android.arch.lifecycle:common:1.0.0-alpha3:compile
android.arch.lifecycle:extensions:1.0.0-alpha3:compile
android.arch.lifecycle:runtime:1.0.0-alpha3:compile
com.android.support:support-annotations:25.3.1:compile
com.android.support:support-compat:25.3.1:compile
com.android.support:support-core-ui:25.3.1:compile
com.android.support:support-core-utils:25.3.1:compile
com.android.support:support-fragment:25.3.1:compile
com.android.support:support-media-compat:25.3.1:compile

View File

@ -822,6 +822,33 @@ abstract class CentralTests extends TestSuite {
} }
} }
} }
'packagingTpe - {
val mod = Module("android.arch.lifecycle", "extensions")
val ver = "1.0.0-alpha3"
val extraRepo = MavenRepository("https://maven.google.com")
* - resolutionCheck(mod, ver, extraRepos = Seq(extraRepo))
* - withArtifacts(mod, ver, "*", extraRepos = Seq(extraRepo), transitive = true) { artifacts =>
val urls = artifacts.map(_.url).toSet
val expectedUrls = Set(
"https://maven.google.com/com/android/support/support-fragment/25.3.1/support-fragment-25.3.1.aar",
"https://maven.google.com/android/arch/core/core/1.0.0-alpha3/core-1.0.0-alpha3.aar",
"https://maven.google.com/android/arch/lifecycle/runtime/1.0.0-alpha3/runtime-1.0.0-alpha3.aar",
"https://maven.google.com/android/arch/lifecycle/extensions/1.0.0-alpha3/extensions-1.0.0-alpha3.aar",
"https://maven.google.com/com/android/support/support-compat/25.3.1/support-compat-25.3.1.aar",
"https://maven.google.com/com/android/support/support-media-compat/25.3.1/support-media-compat-25.3.1.aar",
"https://maven.google.com/com/android/support/support-core-ui/25.3.1/support-core-ui-25.3.1.aar",
"https://maven.google.com/com/android/support/support-core-utils/25.3.1/support-core-utils-25.3.1.aar",
"https://maven.google.com/com/android/support/support-annotations/25.3.1/support-annotations-25.3.1.jar",
"https://maven.google.com/android/arch/lifecycle/common/1.0.0-alpha3/common-1.0.0-alpha3.jar"
)
assert(expectedUrls.forall(urls))
}
}
} }
} }