首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行Tomcat并使用自己的server.xml部署项目

运行Tomcat并使用自己的server.xml部署项目
EN

Stack Overflow用户
提问于 2014-04-16 06:44:26
回答 3查看 11K关注 0票数 11

我只想运行一个已经配置在带有pom.xml的maven项目中的web项目。它使用maven tomcat7 7-maven-plugin部署web应用程序工件,并且在这一点上一切都正常工作。

现在,我想在tomcat配置中添加自己的server.xml和tomcat-users.xml。我读到我需要添加以下几行。

代码语言:javascript
复制
 <serverXml>src/main/resources/tomcat/server.xml</serverXml>
 <tomcatUsers>src/main/resources/tomcat/tomcat-users.xml</tomcatUsers>

这也没问题。它现在正在工作,tomcat是使用上面的配置文件部署的,但问题是> Web应用程序工件没有部署在那里,(在我运行tomcat 7: run时不会自动部署)。似乎插件没有检测到工件,只是启动tomcat服务器而不将工件添加到webapp中,只需使用新的配置文件即可。

我用这个配置。

代码语言:javascript
复制
<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工件,但不使用新的配置文件。

正确的配置是什么,我检查了这个帖子,但是没有,这是可能的,或者我应该使用tomcat管理器手动添加war文件?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-23 20:58:42

tomcat7-maven-plugin文档<serverXml>

server.xml使用备注如果您使用它,您必须在此文件中配置webapp路径.

我认为这意味着您必须在<Context>元素中插入一个war路径的<Host>元素,如下所示:

代码语言:javascript
复制
<Host appBase="webapps" autoDeploy="true" deployXML="false" name="localhost" unpackWARs="true">
    <Context docBase="../../webapp" path="/webapp" reloadable="true" />
</Host>

其中"webapp“是我生成的war名称。显然,appBase相对于target/tomcat (而“webapp”似乎是默认值)。docBase相对于appBase,所以为了简单起见,我使用了构建目录的相对路径。

这对我来说很有用,没有那个<Context>元素,我就会得到一个白色页面。

如果使用的是筛选,则可能可以用属性替换docBase。但是,请注意将server.xml (和tomcat-users.xml)从war文件中排除在外!

票数 17
EN

Stack Overflow用户

发布于 2014-09-24 16:33:32

我已经将以下内容添加到server.xml中,并且我的应用程序可以很好地使用tomcat7 7:run命令:

代码语言:javascript
复制
<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 &quot;%r&quot; %s %b" />
</Host>

下面是我如何在pom.xml中配置插件

代码语言:javascript
复制
<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 dir和src/main/tomcatconf中。这个插件似乎正在从其中一个目录中获取context.xml

希望这对你有用。

票数 4
EN

Stack Overflow用户

发布于 2014-09-23 20:23:38

我想你可以试试这种配置

代码语言:javascript
复制
<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

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23101945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档