Развертывание войны SBT с помощью xsbt-web-plugin

Я настроил проект SBT для использования xsbt-web-plugin для веб-развертывания. Документы, описывающие это, выглядят следующим образом:

вики xsbt-web-plugin

Публикация файлов .war

Это то, что я сделал до сих пор, основываясь на чтении документов:

Я создал plugins.sbt с помощью:

resolvers += "Web plugin repo" at "http://siasia.github.com/maven2"

addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "0.9.0")

В build.sbt добавлены следующие строки:

Seq(webSettings :_*)


// disable .jar publishing
publishArtifact in (Compile, packageBin) := false

// create an Artifact for publishing the .war file
artifact in (Compile, packageWar) := {
  val previous: Artifact = (artifact in (Compile, packageWar)).value
  previous.copy(`type` = "war", extension = "war")
}

// add the .war file to what gets published
addArtifact(artifact in (Compile, packageWar), packageWar)

При загрузке проекта с помощью sbt плагины загружаются, но затем сообщается о следующей ошибке:

[error] Reference to undefined setting:
[error]
[error]   *:packageWar from *:$local (W:\Tempi\TempiJetty\build.sbt:48)
[error]      Did you mean compile:packageWar ?

Запись compile:packageWar вместо packageWar в последней строке вызывает другую ошибку:

[info] Loading project definition from W:\Tempi\TempiJetty\project
W:\Tempi\TempiJetty\build.sbt:48: error: not found: type packageWar
addArtifact(artifact in (Compile, packageWar), compile:packageWar)
                                                       ^
[error] Type error in expression

Что я должен написать, чтобы мой проект SBT поддерживал военную упаковку?


person Suma    schedule 28.04.2014    source источник


Ответы (1)


Кажется, даже когда я удаляю последнюю строку addArtifact(artifact in (Compile, packageWar), packageWar), команда package в sbt по-прежнему создает файл war. Это может быть новым или специфичным для SBT 0.13, который я использую (документы кажутся старыми), или, возможно, целью было упаковать военный файл даже с помощью команды компиляции, которая мне не нужна.

person Suma    schedule 28.04.2014
comment
Привет Сума, не могли бы вы уточнить вопрос? Я поддерживаю xsbt-web-plugin, поэтому хочу убедиться, что документы максимально полезны. Ваш вопрос звучит так, будто вы хотите создать файл WAR, но ваш комментарий звучит так, будто вы хотите избежать создания файла WAR. Какова желаемая цель? Это связано с упаковкой файла WAR? Вы заинтересованы в развертывании файла WAR на сервере? - person earldouglas; 28.04.2014
comment
@James Я хочу создать файл войны (это делается на Jenkins, а затем война развертывается с использованием сборки ant). Я не совсем понимаю, что для этого нужно. Возможно, часть, упомянутая в файлах Publishing .war, вообще не нужна? - person Suma; 28.04.2014
comment
В этом случае все, что вам нужно запустить, это package из sbt или sbt package из командной строки. Это создаст файл WAR в папке target/scala_2.10/.... В приведенном выше файле build.sbt вам не нужно ничего, кроме seq(webSettings :_*). - person earldouglas; 29.04.2014
comment
Вы также можете найти инструкции по созданию минимального xsbt- приложение веб-плагина полезно. Они проведут вас через настройку, вплоть до создания файла WAR в конце. - person earldouglas; 29.04.2014