Как опубликовать пользовательские артефакты в sbt 1.0.x - PullRequest
0 голосов
/ 24 августа 2018

У нас был некоторый пользовательский код в build.sbt для публикации двоичных файлов Debian в Nexus для sbt 0.13

lazy val distrib = com.typesafe.sbt.packager.Keys.dist

publish := (publish) dependsOn distrib

publishLocal := (publishLocal) dependsOn distrib

artifact in distHack ~= { (art: Artifact) => art.copy(`type` = "deb", extension = "deb") }

val distHack = TaskKey[File]("dist-hack", "Hack to publish dist")

val distHackSettings = Seq[Setting[_]](
  distHack := {
    val packageName = "%s_%s_all" format(normalizedName.value, version.value)
    target.value / (packageName + ".deb")
  }
) ++ Seq(addArtifact(artifact in distHack, distHack).settings: _*)

seq(distHackSettings: _*)

//addArtifact(artifact in distHack, distHack)

publishArtifact in (Compile, packageBin) := false 

publishArtifact in (Compile, packageDoc) := false 

publishArtifact in (Compile, packageSrc) := false

Но он не работает в sbt 1.x.У кого-нибудь есть какие-либо указатели, чтобы продолжить?Примечание: я уже прочитал все связанные вопросы по stackoverflow.

1 Ответ

0 голосов
/ 30 августа 2018

Я нашел решение.Вы используете следующий код

lazy val distrib = com.typesafe.sbt.packager.Keys.dist

artifact in (Compile, packageBin) := {
  val previous: Artifact = (artifact in (Compile, packageBin)).value
  previous.withExtension("deb")
}

publish := (publish dependsOn distrib).value

publishLocal := (publishLocal dependsOn distrib).value

publishArtifact in (Compile, packageBin) := true

publishArtifact in (Compile, packageDoc) := false

publishArtifact in (Compile, packageSrc) := false

publishArtifact in Test := false
...