2012-10-22 54 views
1

我試圖在使用sbt-web-plugin(用於運行container:start)時爲jetty創建自定義配置。有two container settings允許指定自定義碼頭xml配置:configurationFilesconfigurationXml(當customConfiguration爲true時)。sbt-web-plugin:使用configurationXml指定類路徑爲碼頭

但是,這完全覆蓋了由sbt-web-plugin完成的jetty的內部配置,因此自定義配置應完全配置jetty。如果沒有指定classpath到項目編譯的.class文件和依賴關係,它將不起作用。

我試圖做這樣的事情:

configurationXml in container.Configuration <<= fullClasspath (
    <Configure id="Server" class="org.eclipse.jetty.server.Server"> 
    ... 
    <Set name="handler"> 
     <New class="org.eclipse.jetty.webapp.WebAppContext"> 
     <Set name="resourceBase"><SystemProperty name="jetty.home" default="."/>/src/main/webapp</Set> 
     <Set name="descriptor"><SystemProperty name="jetty.home" default="."/>/src/main/webapp/WEB-INF/web.xml</Set> 
     <Set name="contextPath">/</Set> 
     <Set name="extraClasspath">{/* classpath should be here */}</Set> 
     </New> 
    </Set> 
    ... 
    </Configure> 
) 

似乎這configurationXmlfullClasspath直接依賴是不可能的,因爲configurationXml is SettingKeyfullClasspath is TaskKey

Tasks with dependencies

的實際重要性這是因爲您不能將任務作爲非任務設置的依賴關係。

是否可以包含fullClasspath設置configurationXml參數?

如果沒有,是否仍然可以將自定義配置設置添加到在container:start上調用的jetty開發服務器?

回答

2

您可以只WebAppContext使用env設置自定義:

env in Compile := Some(file(".")/"jetty-env.xml" asFile) 

例如,請考慮以下的的myproject /碼頭-env.xml

<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 
    <Set name="contextPath">/custom</Set> 
</Configure> 

這將部署webapp下的上下文路徑/custom,但不會更改潛在的Server的任何配置。

+0

此「env」設置在哪裏記錄? – aij

+0

你可以在[文檔0.9版本]找到它(https://github.com/earldouglas/xsbt-web-plugin/blob/master/docs/0.9.md#web-application-settings),但這很漂亮舊的和不贊成的。我會考慮更新2.1。 – earldouglas