Tomcat 7 Maven Plugin多个上下文

时间:2013-07-16 10:46:12

标签: tomcat7 maven-tomcat-plugin

我目前的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)仅指向本地文件夹的第二个上下文/图像? 怎么样?

1 个答案:

答案 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的代码,发现你需要 staticContextDocbasestaticContextPath

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

staticContextPathhttp://<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传递为contextPathstaticContextDocbase传递为baseDirbaseDir的文档声明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.

然后尝试完整路径。如果它没有工作去亲戚;)。