我正在使用Maven 3.0.3和Tomcat插件。使用Maven和Tomcat,我想部署一个嵌入的站点实例。我的问题是如何在嵌入式Tomcat服务器中配置其他上下文路径?下面是我的Tomcat配置,但我的“”规范无效或该文件的内容(如下)无效......
<Context path="/all-new-jx-web" docBase="/Users/davea/Documents/workspace/NissanUSA2/Technology/nna/mycousa/jx/target/web">
因为我调用
mvn clean -Dmaven.test.skip=true verify -Ptomcat tomcat:run
,没有映射到“/ all-new-jx-web”(我的附加上下文路径)的URL被映射(资产不由Tomcat提供)。有什么想法吗?下面是我的pom.xml文件中的tomcat配置文件...
<profile>
<id>tomcat</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<contextFile>config/tomcat/context.xml</contextFile>
<mode>context</mode>
<addContextWarDependencies>true</addContextWarDependencies>
<charset>UTF-8</charset>
<path>/all-new-jx</path>
<update>true</update>
<warDirectory>target/${project.artifactId}-${project.version}.${project.packaging}</warDirectory>
<systemProperties>
<JAVA_OPTS>-Xms256m -Xmx512m -XX:MaxPermSize=256m -XX:NewRatio=6
-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
-verbose:gc"</JAVA_OPTS>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
</profile>
感谢任何解决方案和其他故障排除步骤, - Dave
答案 0 :(得分:4)
我有同样的问题。我尝试给外部服务器xml提供位置,但我可以让我的项目运行。最终我最终修改了tomcat插件代码以包含额外的静态上下文路径。
// Snippet from AbstractRunMojo.java
String appBase = new File(configurationDir, "webapps")
.getAbsolutePath();
Host host = container.createHost("localHost", appBase);
host.addChild(context);
// Adding static context
createStaticContext(container, context, host);//More code after this
private void createStaticContext(final Embedded container, Context context,
Host host) {
if (null != staticContextDocbase) {
Context ctx1 = container.createContext(staticContextPath,
staticContextDocbase);
ctx1.setPrivileged(true);
Wrapper servlet = context.createWrapper();
servlet.setServletClass(DefaultServlet.class.getName());
servlet.setName("staticContent");
ctx1.addChild(servlet);
ctx1.addServletMapping("/", "staticContent");
host.addChild(ctx1);
}
}
答案 1 :(得分:2)
您对contextFile xml元素有了正确的想法,但尝试显式而不是使用相对路径。
<contextFile>${basedir}/config/tomcat/context.xml</contextFile>
${basedir}
是您的pom.xml所在的文件夹。如果您的项目不正确,可能需要更改此部分。
答案 2 :(得分:1)
使用serverXml
配置。
答案 3 :(得分:1)
我们需要相同的才能在开发模式下运行我们的应用程序,它使用Apache solr。以下似乎有效:
然后可以运行maven,如: mvn tomcat:run 。请记住,在这种情况下,java将需要大量内存,因此在运行maven之前,请执行导出MAVEN_OPTS =&#34; -Xmx1536m -XX:MaxPermSize = 512m&#34; 。
pom.xml就像,我们假设有一些属性 - 包括一个名为solr.home 的属性 - 从配置文件中读取:
<project>
...
<dependencies>
...
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr</artifactId>
<version>3.3.0</version>
<type>war</type>
<scope>tomcat</scope>
</dependency>
</dependencies>
<build>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<addContextWarDependencies>true</addContextWarDependencies>
<systemProperties>
<property.you.need>${example.property.yours}</property.you.need>
<solr.solr.home>${solr.home}</solr.solr.home>
</systemProperties>
</configuration>
</plugin>
...
</build>
</project>
然后可以通过以下方式联系Solr:
http://localhost:8080/solr/admin
以及
中的申请http://localhost:8080/your-app-id/