Запустите Tomcat и разверните проект с собственным сервером.XML

Я просто хочу запустить веб-проект, который был настроен в проекте maven с pom.XML. Он использует Maven tomcat7-maven-plugin для развертывания артефакта веб-приложения, и на данный момент все работает правильно.

теперь я хочу добавить свой сервер.xml и tomcat-пользователи.xml в конфигурации tomcat. Я читал, что мне нужно добавить следующие строки.

 <serverXml>src/main/resources/tomcat/server.xml</serverXml>
 <tomcatUsers>src/main/resources/tomcat/tomcat-users.xml</tomcatUsers>

и это нормально. Он работает сейчас, и tomcat развертывается с использованием файла конфигурации выше, но проблема > артефакт веб-приложения не развернут там (не развертывается автоматически при запуске tomcat7: run). Кажется, что артефакт не обнаружен плагином и просто запускает сервер 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, но не использует новые файлы конфигурации.

какова правильная конфигурация вот, я проверил это в должности но ничего, это возможно или я должен добавить файл войны вручную с помощью Tomcat manager?

3 ответов


на tomcat7-Maven-плагина документации говорит <serverXml>:

сервер.xml для использования Примечание Если вы используете это, вы должны настроить в этом файле ваш webapp с пути.

Я думаю, это означает, что вы должны вставить тег <Context> элемент с путем вашей войны внутри <Host> элемент, например, так:

<Host appBase="webapps" autoDeploy="true" deployXML="false" name="localhost" unpackWARs="true">
    <Context docBase="../../webapp" path="/webapp" reloadable="true" />
</Host>

где "webapp" - мое сгенерированное военное имя. Видимо, appBase относительно target/tomcat (и" webapps", похоже, является значением по умолчанию). docBase относительно appBase так что для простоты я использовал относительный путь к каталогу сборки.

это работает для меня, и без того <Context> элемент I получает белую страницу.

если вы используете фильтрацию, вы, вероятно, можете заменить docBase в собственность. Однако позаботьтесь об исключении сервера.xml (и tomcat-пользователи.xml) из вашего файла войны!


я добавил следующее в сервер.в XML и мое приложение отлично работает с tomcat7: run-war command:

<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>

вот как я настраиваю плагин в пом.в 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 один из справочники.

надеюсь, это сработает для вас.


Я думаю, что вы можете попробовать эту конфигурацию

<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>

Ref: https://wiki.base22.com/display/btg/How+to+create+a+Maven+web+app+and+deploy+to+Tomcat+-+fast

надеюсь, что это помогает.