1

我尝试在使用 sbt-web-plugin (用于运行container:start)时为码头创建自定义配置。有两个容器设置允许指定自定义码头 xml 配置:configurationFilesconfigurationXml(何时customConfiguration为真)。

但是,这完全覆盖了由 sbt-web-plugin 完成的码头内部配置,因此自定义配置应该完全配置码头。如果不指定从项目和依赖项编译的 .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>
)

似乎不可能直接依赖configurationXmlon ,因为isisfullClasspathconfigurationXmlSettingKeyfullClasspathTaskKey

具有依赖关系的任务

这样做的实际重要性是,您不能将任务作为非任务设置的依赖项。

是否可以在参数中包含fullClasspath设置configurationXml

如果没有,是否仍然可以将自定义配置设置添加到调用的码头开发服务器container:start

4

1 回答 1

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

于 2013-08-23T23:31:48.427 回答