Publish zip created by sbt-native-packager

自闭症网瘾萝莉.ら 提交于 2020-01-22 14:37:40

问题


I am trying to publish to a repository the zip file generated by the sbt-native-packager plugin through universal:packageBin task.

I configured my project like this:

publishTo := Some("Repo" at "http://repo")

publishMavenStyle := true

packagerSettings

packageArchetype.java_application

I am struggling trying to create a new sbt task (named publishZip) using publish task and packageBin task to publish the zip file. How can I achieve this ?


回答1:


Add the following line to your sbt build (around packagerSettings should be fine)

deploymentSettings

Depending on what you want to do you may not need to define the publishZip task you could run

  • sbt universal:publish which should only publish the zip
  • redefine publish so it depends on universal:publish which would publish all the projects artifacts publish <<= publish.dependsOn(publish in config("universal"))

Then run sbt publish.

For completeness sake deploymentSettings (and packagerSettings) come from com.typesafe.sbt.SbtNativePackager which is useful to know if you use a scala build :)




回答2:


The deploymentSettings worked however I wanted to refine the settings. It seems there were several issues going on. I and finally came up with the following solution:

//--use sbt-native-packager default java application 
packageArchetype.java_application

//--a dummy task to hold the result of the universal:packageBin to stop the circular dependency issue
val packageZip = taskKey[File]("package-zip")

//--hard coded result of "universal:packageBin"
packageZip := (baseDirectory in Compile).value / "target" / "universal" / (name.value + "-" + version.value + ".zip")

//--label the zip artifact as a zip instead of the default jar
artifact in (Universal, packageZip) ~= { (art:Artifact) => art.copy(`type` = "zip", extension = "zip") }

//--add the artifact so it is included in the publishing tasks
addArtifact(artifact in (Universal, packageZip), packageZip in Universal)

//--make sure the zip gets made before the publishing commands for the added artifacts
publish := (publish dependsOn (packageBin in Universal)).value

publishM2 := (publishM2 dependsOn (packageBin in Universal)).value

publishLocal := (publishLocal dependsOn (packageBin in Universal)).value

The key pieces of this solution came from a comment from yanns and dgrandes



来源:https://stackoverflow.com/questions/21558398/publish-zip-created-by-sbt-native-packager

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!