2014-04-28 25 views
0

我已經通過SBT項目進行了配置,使用xsbt-web-plugin進行web部署。描述此的文檔似乎是:使用xsbt-web-plugin進行SBT戰爭部署

xsbt-web-plugin Wiki

Publishing .war files

這是我迄今所做的基於閱讀文檔:

我與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項目支持戰爭包裝?

回答

0

看來即使當我刪除最後一行addArtifact(artifact in (Compile, packageWar), packageWar)時,sbt中的package命令仍然構建了war文件。這可能是新的或特定的SBT 0.13我正在使用(文檔似乎是較舊的),或者也許是打算打包戰爭文件甚至編譯命令,我不需要。

+1

嗨蘇瑪,你會澄清這個問題嗎?我維護xsbt-web-plugin,所以我想確保文檔儘可能有幫助。你的問題聽起來像你想建立一個WAR文件,但你的評論聽起來像你想*避免*建立一個WAR文件。什麼是期望的目標?它是否需要打包WAR文件?您是否有興趣將WAR文件部署到服務器? – earldouglas

+0

@James我想建立一個戰爭檔案(它是在Jenkins上完成的,然後戰爭使用螞蟻構建部署)。我不太明白什麼是必要的。 「發佈.war文件」中提到的部分可能根本就沒有必要? – Suma

+1

在這種情況下,您需要運行的是來自sbt的'package',或者來自命令行的'sbt package'。這將在* target/scala_2.10 /...*下生成一個WAR文件。在上面的* build.sbt *中,除了'seq(webSettings:_ *)'之外,你不需要任何東西。 – earldouglas