使用 sbt-native-packager 发布到 bintray 一个 zip 文件 [英] Publish to bintray a zip file with sbt-native-packager

查看:39
本文介绍了使用 sbt-native-packager 发布到 bintray 一个 zip 文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用 sbt-native-launcher 将 zip 文件发布到 bintray.

I want to publish a zip file to bintray using the sbt-native-launcher.

我能够执行:

sbt publish

并发布主要工件(.jar、javadocs 等).

and it publishes the main artifacts (.jar, javadocs, and so on).

我也可以执行:

sbt universal:packageBin

它会生成 .zip 文件.

and it generates the .zip file.

但是,当我执行时:

sbt universal:publish

它给出了以下错误:

[info] Wrote C:\src\ShExcala\target\scala-2.10\shexcala_2.10-0.0.1.pom
tar: Cannot execute remote shell: No such file or directory
tar: C\:\\Users\\Labra\\AppData\\Local\\Temp\\sbt_407249ba\\shexcala-0.0.1.tar: Cannot open: I/O error
tar: Error is not recoverable: exiting now
[trace] Stack trace suppressed: run last universal:packageZipTarball for the full output.
[error] (universal:packageZipTarball) Error tarballing
C:\src\ShExcala\target\universal\shexcala-0.0.1.tgz. Exit code: 2

问题似乎出在universal:packageZipTarball"任务上,它也给出了同样的错误.

It seems that the problem is with the "universal:packageZipTarball" task which also gives the same error.

我正在使用 Windows,并且我已经检查过我是否安装了tar"、xz"和gzip".

I am using windows and I have checked that I have "tar", "xz" and "gzip" installed.

我现在不介意只发布 .zip,所以也许另一种解决方法就是知道如何配置 sbt-native-packager 以避免 packageZipTarball 任务.

I would not mind to publish only the .zip by now, so maybe another workaround is just to know how can I configure sbt-native-packager to avoid the packageZipTarball task.

build.sbt 定义是:

The build.sbt definition is:

import sbt._
import sbt.Keys._
import AssemblyKeys._
import bintray.Plugin.bintraySettings
import bintray.Keys._
import scala.scalajs.sbtplugin.ScalaJSPlugin.ScalaJSKeys._

lazy val root = project.in(file("."))//.settings(crossScalaVersions := Seq("2.10.4", "2.11.0"))

Build.sharedSettings

version := Build.currentVersion

libraryDependencies ++= Seq(
    "org.specs2" %% "specs2" % "2.3.7" % "test" 
  , "org.scalatest" % "scalatest_2.10" % "2.0.1-SNAP" % "test"
  , "commons-configuration" % "commons-configuration" % "1.7"
  , "org.rogach" %% "scallop" % "0.9.5" 
  , "com.typesafe" % "config" % "1.0.1"
  , "org.scala-lang" % "scala-compiler" % "2.10.2" 
  , "com.assembla.scala-incubator" % "graph-core_2.10" % "1.6.2"
  , "org.apache.jena" % "jena-arq" % "2.10.1" 
  , "org.scalaz" % "scalaz-core_2.10" % "7.0.6" 
  , "es.weso" % "stateparser_2.10" % "0.0.1"
  , "es.weso" % "wesin_2.10" % "0.0.1" 
  )

autoCompilerPlugins := true

seq(bintraySettings:_*)

Build.publishSettings

deploymentSettings

publishMavenStyle := true

// publish <<= publish.dependsOn(publish in config("universal"))

packageArchetype.java_application

resourceGenerators in Test += Def.task {
  val location = url("https://github.com/shexSpec/test-suite/raw/gh-pages/tests.zip")
  IO.unzipURL(location, resourceManaged.value / "downloadedTests").toSeq
}.taskValue

resolvers ++= Seq("snapshots", "releases").map(Resolver.sonatypeRepo)

project/build.scala 是:

import sbt._
import sbt.Keys._
import bintray.Plugin.bintraySettings
import bintray.Keys._
import Def.ScopedKey
import scala.scalajs.sbtplugin.ScalaJSPlugin._

object Build extends sbt.Build {

  val isRelease = true 

  def repo = "weso-releases" 

  val shExcalaVersion = "0.0.1"

  publishMavenStyle := false

  val currentVersion = shExcalaVersion

  protected val bintrayPublishIvyStyle = settingKey[Boolean]("=== !publishMavenStyle")   

  lazy val publishSettings = Seq(
    repository in bintray := this.repo,
    bintrayOrganization in bintray := Some("weso"),
    licenses += ("MPL-2.0", url("http://opensource.org/licenses/MPL-2.0")),
    bintrayPublishIvyStyle := true
  )

 val sharedSettings = Seq(
    organization := "es.weso",
    name := "shExcala",
    scalaVersion := "2.10.4"
 )
} 

lastuniversal:packageZipTarball 的输出是:

> last universal:packageZipTarball
java.lang.RuntimeException: Error tarballing C:\src\ShExcala\target\universal\shexcala-0.0.1.tgz. Exit code: 2
        at scala.sys.package$.error(package.scala:27)
        at com.typesafe.sbt.packager.universal.Archives$$anonfun$makeTarball$1.apply(Archives.scala:134)
        at  com.typesafe.sbt.packager.universal.Archives$$anonfun$makeTarball$1.apply(Archives.scala:118)
        at sbt.IO$.withTemporaryDirectory(IO.scala:285)
        at com.typesafe.sbt.packager.universal.Archives$.makeTarball(Archives.scala:118)
        at com.typesafe.sbt.packager.universal.Archives$$anonfun$10.apply(Archives.scala:111)
        at com.typesafe.sbt.packager.universal.Archives$$anonfun$10.apply(Archives.scala:111)
        at scala.Function3$$anonfun$tupled$1.apply(Function3.scala:35)
        at scala.Function3$$anonfun$tupled$1.apply(Function3.scala:34)
        at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
        at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
        at sbt.std.Transform$$anon$4.work(System.scala:64)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
        at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
        at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
        at sbt.Execute.work(Execute.scala:244)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
        at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
        at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
        at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)
[error] (universal:packageZipTarball) Error tarballing     C:\src\ShExcala\target\universal\shexcala-0.0.1.tgz. Exit code: 2
>

推荐答案

我认为问题在于 Windows 的 tar,它不接受绝对路径.sbt-native-packager 所做的是执行 tar -pcvf <输入>.

I think the problem is with the tar for windows, which does not accept absolute paths. What sbt-native-packager does is executing tar -pcvf <absolute-path> <input>.

我不确定您是否可以轻松禁用 universal:packageZipTarball 任务.

I am not sure you can easily disable universal:packageZipTarball task.

不过我可以提出一个解决方法.安装bsdtar,貌似没有这个问题,依然可以称为牛油果.从链接下载文件,并安装gnutar,安装后进入C:\Program Files\GnuWin32\bin 复制bsdtar.exetar.exe.

I can propose a workaround though. Install bsdtar, which doesn't seem to have this issue, and still can be called as gnu tar. Download the file from the link, and install gnutar, after installation go to C:\Program Files\GnuWin32\bin and copy bsdtar.exe to tar.exe.

确保 tar 命令在您的 PATH 变量中.

Make sure the tar command is in your PATH variable.

这篇关于使用 sbt-native-packager 发布到 bintray 一个 zip 文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆