2014-05-18 3 views
1

sbt-native-launcher를 사용하여 bintray에 zip 파일을 게시하려고합니다.sbt-native-packager로 zip 파일을 bintray로 게시

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 보편적"와 것 같다 .

나는 윈도우를 사용하고 있으며 "tar", "xz"및 "gzip"이 설치되어 있는지 확인했습니다.

지금은 .zip 만 게시해도 괜찮습니까? 그럼 다른 해결 방법은 sbt-native-packager를 구성하여 packageZipTarball 작업을 피할 수있는 방법을 아는 것입니다.

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은 다음과 같습니다 :

build.sbt 정의는

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

내가 문제가 함께 생각 Windows 용 tar은 절대 경로를 허용하지 않습니다. 무엇 sbt-native-packager 않습니다 실행 tar -pcvf <absolute-path> <input>.

나는 쉽게 universal:packageZipTarball 작업을 사용 중지 할 수 있는지 확신하지 못합니다.

그래도 해결 방법을 제안 할 수 있습니다. bsdtar을 설치하십시오.이 문제는없는 것으로 보이며 여전히 gnu tar로 호출 될 수 있습니다. 링크를 클릭하여 파일을 다운로드 한 후 gnutar을 설치 한 후 C : \ Program Files \ GnuWin32 \ bin으로 이동하고 bsdtar.exe에서 tar.exe으로 복사하십시오.

tar 명령이 PATH 변수에 있는지 확인하십시오.

+0

감사합니다 ... 작동하는 것 같습니다. 적어도,'universal : packageZipTarball'을 실행하면 .tgz가 생성됩니다. 그러나'universal : publish'를 실행하면 sbt가 중단됩니다. 나는'universal : packageBin'과'publish'을 시도했으며 예상대로 작동합니다. – Labra