我只想运行一个使用pom.xml在maven项目中配置的Web项目。 它使用maven tomcat7-maven-plugin来部署Web应用程序工件,此时所有工作正常。
现在我想在tomcat配置中添加自己的server.xml和tomcat-users.xml。我读到我需要添加以下几行。
<serverXml>src/main/resources/tomcat/server.xml</serverXml>
<tomcatUsers>src/main/resources/tomcat/tomcat-users.xml</tomcatUsers>
这很好。它现在正在工作,并且使用上面的配置文件部署了tomcat,但问题是&gt; 未部署Web应用程序工件(运行tomcat7时不会自动部署:运行)。看起来插件没有检测到工件,只是启动tomcat服务器而不将工件添加到webapps只需使用新的配置文件。
我使用此配置。
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<id>tomcat-run</id>
<goals>
<goal>exec-war-only</goal>
</goals>
<phase>package</phase>
<configuration>
<url>http://localhost:8080/web-services</url>
<path>/web-services</path>
<serverXml>src/main/resources/tomcat/server.xml</serverXml>
<tomcatUsers>src/main/resources/tomcat/tomcat-users.xml</tomcatUsers>
<warRunDependencies>
<warRunDependency>
<dependency>
<groupId>com.koitoer.webservices</groupId>
<artifactId>web-services</artifactId>
<version>1.0-SNAPSHOT</version>
<type>war</type>
</dependency>
<contextPath>/web-services</contextPath>
</warRunDependency>
</warRunDependencies>
</configuration>
</execution>
</executions>
</plugin>
但是tomcat开始部署webapp工件但不使用新的配置文件。
那里的配置是什么,我检查了这个post但没有,这是可能的,或者我应该使用tomcat manager手动添加war文件?
答案 0 :(得分:15)
<serverXml>
代表<Context>
:
要使用的server.xml注意如果使用此选项,则必须在此文件中进行配置 您的webapp路径。
我认为这意味着你必须在<Host>
元素中插入一个带有战争路径的<Host appBase="webapps" autoDeploy="true" deployXML="false" name="localhost" unpackWARs="true">
<Context docBase="../../webapp" path="/webapp" reloadable="true" />
</Host>
元素,如下所示:
appBase
“webapp”是我生成的战争名称。显然,target/tomcat
与docBase
相关(并且“webapps”似乎是默认值)。 appBase
与<Context>
相关,所以为了简单起见,我使用了构建目录的相对路径。
这对我有用,如果没有docBase
元素,我会得到一个白页。
如果您使用过滤,则可以用属性替换{{1}}。但请注意从war文件中排除server.xml(和tomcat-users.xml)!
答案 1 :(得分:4)
我已将以下内容添加到 server.xml 中,我的应用程序可以正常运行tomcat7:run-war命令:
<Host appBase="webapps" autoDeploy="true" deployXML="false"
name="localhost" unpackWARs="true">
<Context docBase="../../webApplicationName"
path="/webApplicationName" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
以下是我在 pom.xml
中配置插件的方法<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path>
<serverXml>src/main/tomcatconf/server.xml</serverXml>
<warDirectory>target/appName</warDirectory>
<webapps>
<webapp>
<groupId>com.abc</groupId>
<artifactId>appName</artifactId>
<version>7.0.1</version>
<type>war</type>
</webapp>
</webapps>
</configuration>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.5.5</version>
</dependency>
</plugin>
我已将server.xml
+其他配置文件放入src/main/tomcatconf
目录(插件的默认值),并将context.xml
放入META-INF
目录并放入src/main/tomcatconf
。该插件似乎从其中一个目录中获取context.xml
。
希望这适合你。
答案 2 :(得分:0)
我认为你可以试试这个配置
<project>
...
<build>
<finalName>servidor-identidades-webapp</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<server>myserver</server>
<url>http://127.0.0.1:8080/manager</url>
<path>/servidor-identidades-webapp</path>
<warSourceDirectory>C:/Users/fulanis/workspace2/web/target/servidor-identidades-webapp.jar</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>
价: https://wiki.base22.com/display/btg/How+to+create+a+Maven+web+app+and+deploy+to+Tomcat+-+fast
希望这有帮助。