2014-02-17 70 views
1

問題

對於Java的Web應用程序,如果你把在Web服務器希望他們在開發機器上的類,它可以節省您的步驟每次編譯時打包並重新部署您的Web應用程序。它還簡化了開發和部署目錄結構相同的事情。 Tomcat's Standard Directory Layout是:SBT(簡單生成工具):更改構建目標「類」目錄

WEB-INF/ 
WEB-INF/classes 
WEB-INF/lib 

但SBT希望把所有的類中:

target/scala-2.10/classes 

如何判斷SBT把班WEB-INF/classes呢?

背景

到目前爲止,我一直在使用SBT只是單元測試和我從WEB-INF而不是我的項目的根目錄下運行它,不要擔心它拋出類,因爲測試不需要部署。我想我可以在一個批處理文件中將SBT包裝到CD中,然後在CD完成後回來,但這似乎有點混亂。

人們如何解決這個問題?我可以在每次構建後刪除WEB-INF/classes,然後刪除copytarget/scala-2.10/classes,但這可能會消除SBT提供的增量/最小編譯的一些好處。

加分...

我不知道如果這是一個新問題的一部分,但它屬於「使用SBT構建Java Web應用程序」下,所以我會包括它:像工具log4j,Struts,proxool和Hibernate似乎都希望在每個構建中將文件(和子目錄遞歸)從src/main/resources複製到classes,並且我可以按照我現在使用Ant構建的方式顯式複製它們。但是如果SBT有一個web-app-defaults,maven-defaults或者java-defaults模板或者其他東西,這對了解這些信息會有所幫助。

+1

你吃過看看xsbt-Web的插件(https://github.com/earldouglas/xsbt-web-plugin )?這可以滿足您的需求。不知道它是否適用於sbt 0.13。 – Christian

回答

3

我覺得應該是

target := base/"WEB-INF" 

classDirectory := base/"WEB-INF"/"classes"