我目前的pom.xml状态
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<path>/myPath</path>
</configuration>
</plugin>
这很好用。我现在正在尝试为服务器上的图像添加额外的上下文,
所以&#34; old&#34;上下文/myPath
指向webapp,/images
可用于处理图片
我试图添加一个上下文文件,但是当我这样做时,只加载了我的/images
上下文
另外,我不想每次都构建WAR(如果我为两个上下文使用了两个context.xml文件就是这种情况)
是否可以添加a)上下文(使用tomcat7的当前开发状态:运行AND b)仅指向本地文件夹的第二个上下文/图像? 怎么样?
答案 0 :(得分:2)
虽然它是answered here,但认为发布xml的样子会很好:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<path>/myPath</path>
<staticContextPath>/images</staticContextPath>
</configuration>
</plugin>
另一个答案使用staticContextDocbase而不是staticContextPath,我无法区分两者之间的区别,但其中一个应该有效。然而,Haven并没有自己尝试过;)
Tomcat的这两个属性的文档:
staticContextDocbase:
静态上下文docroot基本完全限定路径
staticContextPath:
静态上下文
可能是 fully qualified path
与相对路径形成鲜明对比。
好吧,我深入研究了插件和Apache的代码,发现你需要 staticContextDocbase
和staticContextPath
。
staticContextDocbase
是Tomcat应该从中检索静态上下文的路径。在您的情况下,它是C:/images
。
staticContextPath
是http://<hostname>:<port>
之后的URL中的部分,静态上下文应该发送给客户端。在您的情况下,它是/images
。
应该像这样配置Maven:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<path>/myPath</path>
<staticContextPath>/images</staticContextPath>
<staticContextDocbase>C:/images</staticContextDocbase>
</configuration>
</plugin>
另一个注意事项:
As seen here,插件使用Tomcat.addContext(String contextPath, String baseDir)
,staticContextPath
传递为contextPath
,staticContextDocbase
传递为baseDir
。 baseDir
的文档声明Must exist, relative to the server home
。
OTOH,baseDir
按原样移动到Context.setBaseDir(String docBase)
。 {em} 方法的文档baseDir
表示This can be an absolute pathname, a relative pathname, or a URL.
。
然后尝试完整路径。如果它没有工作去亲戚;)。