我在使用sbt-web-plugin(与container:start
一起运行时)尝试为jetty创建自定义配置。有two container settings允许指定自定义jetty xml配置:configurationFiles
和configurationXml
(当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>
)
似乎configurationXml
对fullClasspath
的直接依赖是不可能的,因为configurationXml
is SettingKey
和fullClasspath
is TaskKey
:
这一点的实际重要性在于您不能将任务作为非任务设置的依赖项。
是否可以在fullClasspath
参数中包含configurationXml
设置?
如果没有,是否仍然可以将自定义配置设置添加到container:start
上调用的jetty开发服务器上?
答案 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
的任何配置。