From 13da5e871f28aaa380d63f0268e9b2585b624ba7 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Fri, 21 Apr 2017 16:26:49 +0200 Subject: [PATCH] Don't leave POMs as artifacts in update reports sbt-pack isn't too fine with those in particular --- .../src/main/scala-2.10/coursier/ToSbt.scala | 18 +++++++++--- .../sbt-coursier/no-pom-artifact/build.sbt | 28 +++++++++++++++++++ .../no-pom-artifact/project/plugins.sbt | 11 ++++++++ .../sbt-coursier/no-pom-artifact/test | 1 + 4 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 sbt-coursier/src/sbt-test/sbt-coursier/no-pom-artifact/build.sbt create mode 100644 sbt-coursier/src/sbt-test/sbt-coursier/no-pom-artifact/project/plugins.sbt create mode 100644 sbt-coursier/src/sbt-test/sbt-coursier/no-pom-artifact/test diff --git a/sbt-coursier/src/main/scala-2.10/coursier/ToSbt.scala b/sbt-coursier/src/main/scala-2.10/coursier/ToSbt.scala index 5e3e5e33e..cd7aa7bcc 100644 --- a/sbt-coursier/src/main/scala-2.10/coursier/ToSbt.scala +++ b/sbt-coursier/src/main/scala-2.10/coursier/ToSbt.scala @@ -96,14 +96,23 @@ object ToSbt { def moduleReports( res: Resolution, classifiersOpt: Option[Seq[String]], - artifactFileOpt: (Module, String, Artifact) => Option[File] + artifactFileOpt: (Module, String, Artifact) => Option[File], + keepPomArtifact: Boolean = false ) = { - val depArtifacts = + val depArtifacts0 = classifiersOpt match { case None => res.dependencyArtifacts case Some(cl) => res.dependencyClassifiersArtifacts(cl) } + val depArtifacts = + if (keepPomArtifact) + depArtifacts0 + else + depArtifacts0.filter { + case (_, a) => a.attributes != Attributes("pom", "") + } + val groupedDepArtifacts = grouped(depArtifacts) val versions = res.dependencies.toVector.map { dep => @@ -155,7 +164,8 @@ object ToSbt { resolution: Resolution, configs: Map[String, Set[String]], classifiersOpt: Option[Seq[String]], - artifactFileOpt: (Module, String, Artifact) => Option[File] + artifactFileOpt: (Module, String, Artifact) => Option[File], + keepPomArtifact: Boolean = false ): sbt.UpdateReport = { val configReports = configs.map { @@ -163,7 +173,7 @@ object ToSbt { val configDeps = extends0.flatMap(configDependencies.getOrElse(_, Nil)) val subRes = resolution.subset(configDeps) - val reports = ToSbt.moduleReports(subRes, classifiersOpt, artifactFileOpt) + val reports = ToSbt.moduleReports(subRes, classifiersOpt, artifactFileOpt, keepPomArtifact) new ConfigurationReport( config, diff --git a/sbt-coursier/src/sbt-test/sbt-coursier/no-pom-artifact/build.sbt b/sbt-coursier/src/sbt-test/sbt-coursier/no-pom-artifact/build.sbt new file mode 100644 index 000000000..372da643b --- /dev/null +++ b/sbt-coursier/src/sbt-test/sbt-coursier/no-pom-artifact/build.sbt @@ -0,0 +1,28 @@ + +lazy val noPomCheck = TaskKey[Unit]("noPomCheck") + +noPomCheck := { + + val configReport = update.value + .configuration("compile") + .getOrElse { + throw new Exception( + "compile configuration not found in update report" + ) + } + + val artifacts = configReport + .modules + .flatMap(_.artifacts) + .map(_._1) + + val pomArtifacts = artifacts + .filter { a => + a.`type` == "pom" && a.classifier.isEmpty + } + + for (a <- pomArtifacts) + streams.value.log.error(s"Found POM artifact $a") + + assert(pomArtifacts.isEmpty) +} diff --git a/sbt-coursier/src/sbt-test/sbt-coursier/no-pom-artifact/project/plugins.sbt b/sbt-coursier/src/sbt-test/sbt-coursier/no-pom-artifact/project/plugins.sbt new file mode 100644 index 000000000..8d902e4dc --- /dev/null +++ b/sbt-coursier/src/sbt-test/sbt-coursier/no-pom-artifact/project/plugins.sbt @@ -0,0 +1,11 @@ +{ + val pluginVersion = sys.props.getOrElse( + "plugin.version", + throw new RuntimeException( + """|The system property 'plugin.version' is not defined. + |Specify this property using the scriptedLaunchOpts -D.""".stripMargin + ) + ) + + addSbtPlugin("io.get-coursier" % "sbt-coursier" % pluginVersion) +} \ No newline at end of file diff --git a/sbt-coursier/src/sbt-test/sbt-coursier/no-pom-artifact/test b/sbt-coursier/src/sbt-test/sbt-coursier/no-pom-artifact/test new file mode 100644 index 000000000..67b4dc666 --- /dev/null +++ b/sbt-coursier/src/sbt-test/sbt-coursier/no-pom-artifact/test @@ -0,0 +1 @@ +> noPomCheck