sbt-web-plugin:使用configurationXml指定到jetty的classpath

时间:2012-10-22 10:56:47

标签: jetty sbt xsbt-web-plugin

我在使用sbt-web-plugin(与container:start一起运行时)尝试为jetty创建自定义配置。有two container settings允许指定自定义jetty xml配置:configurationFilesconfigurationXml(当customConfiguration为真时)。

但是,这会完全覆盖sbt-web-plugin完成的jetty内部配置,因此自定义配置应该完全配置jetty。如果没有指定从项目和依赖项编译的.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开发服务器上?

1 个答案:

答案 0 :(得分:2)

您可以使用WebAppContext设置自定义env

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

例如,请考虑 myproject / jetty-env.xml 中的以下内容:

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

这将在上下文路径 / custom 下部署您的webapp,但不会更改基础Server的任何配置。