1

在我目前的 pom.xml 状态中,我有

<plugin>  
  <groupId>org.apache.tomcat.maven</groupId>  
  <artifactId>tomcat7-maven-plugin</artifactId>  
  <version>2.0</version>  
  <configuration>  
    <path>/myPath</path>  
  </configuration>
</plugin>

这工作正常。我现在正在尝试为服务器上的图像添加一个额外的上下文,以便“旧”上下文/myPath指向 webapp/images并可用于处理图像。
我试图添加一个上下文文件,但是当我这样做时,只会/images加载我的上下文。
另外,我不想每次都构建 WAR(如果我对两个上下文使用两个 context.xml 文件,就会出现这种情况)

是否可以添加 a) 上下文(使用 tomcat7:run 的当前开发状态​​和 b)仅指向本地文件夹的第二个上下文 /images?如何?

4

1 回答 1

2

虽然在这里得到了回答,但认为最好发布 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,我无法分辨两者之间的区别,但其中一个应该可以工作。不过,我自己还没有尝试过;)


Tomcat的这两个属性的文档:

静态上下文文档库:

静态上下文 docroot 基本完全限定路径

静态上下文路径:

静态上下文

可能fully qualified path与相对路径相反。


好吧,我深入研究了插件和 Apache 的代码,发现你需要两者 staticContextDocbasestaticContextPath.

staticContextDocbase是 Tomcat 应该从中检索静态上下文的路径。在您的情况下,它是C:/images.

staticContextPath是 URLhttp://<hostname>:<port>中应将静态上下文发送给客户端的部分。在您的情况下,它是/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>

另一个注意事项:

如此处所见,插件使用Tomcat.addContext(String contextPath, String baseDir)staticContextPath传递为contextPathstaticContextDocbase传递为baseDir。的文档baseDir声明它Must exist, relative to the server home

OTOH,baseDir按原样移动到Context.setBaseDir(String docBase). 方法的文档baseDir说明This can be an absolute pathname, a relative pathname, or a URL..

然后尝试完整路径。如果它不起作用去亲戚;)。

于 2013-07-16T12:04:05.253 回答