发布 sbt-native-packager 创建的 zip
Posted
技术标签:
【中文标题】发布 sbt-native-packager 创建的 zip【英文标题】:Publish zip created by sbt-native-packager 【发布时间】:2014-02-28 18:30:38 【问题描述】:我正在尝试通过 universal:packageBin 任务将 sbt-native-packager 插件生成的 zip 文件发布到存储库。
我这样配置我的项目:
publishTo := Some("Repo" at "http://repo")
publishMavenStyle := true
packagerSettings
packageArchetype.java_application
我正在努力尝试使用发布任务和 packageBin 任务创建一个新的 sbt 任务(名为 publishZip)来发布 zip 文件。我怎样才能做到这一点?
【问题讨论】:
在项目本身中创建了一个文档请求github.com/sbt/sbt-native-packager/issues/443 【参考方案1】:将以下行添加到您的 sbt 构建中(围绕 packagerSettings 应该没问题)
deploymentSettings
根据您想要做什么,您可能不需要定义可以运行的 publishZip 任务
sbt universal:publish
应该只发布 zip
重新定义发布,使其依赖于universal:publish,它将发布所有项目工件
publish <<= publish.dependsOn(publish in config("universal"))
然后运行 sbt publish。
为了完整起见deploymentSettings
(和packagerSettings
)来自com.typesafe.sbt.SbtNativePackager
,这对于了解您是否使用scala构建很有用:)
【讨论】:
我试过universal:publish
,但它只发布javadoc、jar、源代码和pom文件。我错过了特定配置吗?
对不起,我错过了部署设置,我已经用必要的信息编辑了我的答案。
如果您使用的是较新版本,则需要将UniversalDeployPlugin
添加到您的项目中,而不是使用deploymentSettings
【参考方案2】:
deploymentSettings
工作,但我想改进设置。似乎有几个问题正在发生。我终于想出了以下解决方案:
//--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
这个解决方案的关键部分来自comment from yanns 和dgrandes
【讨论】:
对于那些现在看到这个的人(2020 年)。 谢谢迈克尔,我更新并删除了以上是关于发布 sbt-native-packager 创建的 zip的主要内容,如果未能解决你的问题,请参考以下文章
Sbt-Native-Packager 控制文件与 .deb 创建的名称不一致
为使用 sbt-native-packager 创建的可执行文件设置 JVM 选项的推荐方法是啥?
如何使用 sbt-native-packager 创建 Upstart Zip 包?
SBT 使用 sbt-native-packager 如何创建不同的构建文件?
使用 Sbt-native-packager 将 fat.jar + 外部文件创建到单个 tar.gz 文件中以在我的 Nexus 上发布