2014-05-18 43 views
1

我想用sbt-native-launcher發佈zip文件到bintray。發佈到bintray用sbt-native-packager的zip文件

我能夠執行:

sbt publish 

,並將其發佈的主要文物(的.jar,的javadoc,等等)。

我也能夠執行:

sbt universal:packageBin 

及其產生的.zip文件。

然而,當我執行:

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 

看來,問題出在「萬能:packageZipTarball」的任務,也給出了同樣的錯誤。

我正在使用Windows,並檢查了我是否安裝了「tar」,「xz」和「gzip」。

我不介意現在只發布.zip,所以也許另一個解決方法是知道如何配置sbt-native-packager以避免packageZipTarball任務。

的build.sbt定義是:

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" 
) 
} 

last universal: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 
> 
+0

你可以分享你的構建定義和在'universal:publish'失敗後執行的'last universal:packageZipTarball'的輸出 – lpiepiora

+0

我編輯了添加build.sbt和project/build.scala文件的問題 – Labra

+0

你可以請添加'tar --version'和'gzip --version'的輸出。此外,您是否可以確認您的目錄/工件名稱中沒有空格? – lpiepiora

回答

3

我認爲這個問題是與tar for windows,它不接受絕對路徑。 sbt-native-packager確實在執行tar -pcvf <absolute-path> <input>

我不確定您可以輕鬆禁用universal:packageZipTarball任務。

雖然我可以提出一個解決方法。安裝bsdtar,似乎沒有這個問題,仍然可以稱爲gnu焦油。從鏈接下載文件,並安裝gnutar,安裝完成後轉至C:\ Program Files \ GnuWin32 \ bin並複製bsdtar.exetar.exe

確保tar命令在您的PATH變量中。

+0

謝謝......它似乎工作。至少,如果我執行'universal:packageZipTarball',它會生成.tgz。但是,如果我執行'universal:publish' sbt掛斷。我嘗試了'universal:packageBin'和'publish',它們按預期工作。 – Labra

相關問題