2014-02-04 2 views
5

Я пытаюсь опубликовать в хранилище файл почтового индекса, порожденный SBT-нативной Упаковщик, плагина через универсальные: packageBin задачи.Опубликовать зип созданного SBT-родным-упаковщиком

Я настроил свой проект так:

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

publishMavenStyle := true 

packagerSettings 

packageArchetype.java_application 

Я изо всех сил пытается создать новую задачу SBT (названный publishZip) с помощью опубликовать задачу и задачу packageBin опубликовать файл почтового индекса. Как я могу это достичь?

+0

Created запрос документации в самом проекте https://github.com/sbt/sbt -native-packager/issues/443 –

ответ

7

Добавьте следующую строку в SBT сборки (около packagerSettings должно быть хорошо)

deploymentSettings

В зависимости от того, что вы хотите сделать, вы не можете определить задачу publishZip можно запустить

  • sbt universal:publish, который должен публиковать только zip
  • redefine публиковать так, что это зависит от универсального: публиковать, в котором будут опубликованы все проекты артефактов publish <<= publish.dependsOn(publish in config("universal"))

Затем запустите sbt publish.

Для полноты ради deploymentSettingspackagerSettings) происходят из com.typesafe.sbt.SbtNativePackager что полезно знать, если вы используете SCALA сборки :)

+0

Я пробовал «универсальный: публиковать», но он только публикует файлы javadoc, jar, sources и pom. Упускаю ли я конкретную конфигурацию? – JLM

+0

Извините, я пропустил отсутствие deploySettings, я отредактировал свой ответ с необходимой информацией. – Jean

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) 

publishM2 <<= (publishM2) dependsOn (packageBin in Universal) 

publishLocal <<= (publishLocal) dependsOn (packageBin in Universal) 

Основные части этого решения пришли из comment from yanns и dgrandes

Смежные вопросы