He estado usando mvn tomcat7-maven-plugin:run -am -pl :foo con éxito para ejecutar un solo proyecto a la vez en Tomcat como se muestra aquí. Ahora me gustaría tener varios módulos de ejecutar en el mismo puerto, pero en contextos diferentes. Por ejemplo, me gustaría tener:

/    => foo.war
/bar => bar.war

He aquí un ejemplo pom.xml el fragmento que he estado trabajando:

<project><!-- ... -->
    <build><!-- ... -->
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.0-SNAPSHOT</version>
                    <configuration>
                        <path>/</path>
                        <port>8080</port>
                        <addContextWarDependencies>true</addContextWarDependencies>
                        <addWarDependenciesInClassloader>true</addWarDependenciesInClassloader>
                        <warSourceDirectory>${project.build.directory}/${project.build.finalName}/</warSourceDirectory>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>${project.groupId}</groupId>
                            <artifactId>bar</artifactId>
                            <version>${project.version}</version>
                            <type>war</type>
                            <scope>tomcat</scope>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    <pluginRepositories>
        <pluginRepository>
            <id>apache.snapshots</id>
            <name>Apache Snapshots</name>
            <url>http://repository.apache.org/content/groups/snapshots-group/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
     </pluginRepositories>
</project>

Es esto posible con el tomcat7-maven-plugin:run plugin? Estoy luchando por encontrar la sintaxis correcta para llegar a jugar bien. Cuando ejecuto el maven comando a ejecutar, sólo se ejecuta la primera de ellas se encuentra en el proyecto de la jerarquía. Y si me quedo con el <fork>true</fork> o, obviamente, desde diferentes terminales, a continuación, me sale «de java.net.BindException: Dirección ya está en uso :8080».

InformationsquelleAutor mckamey | 2012-08-14

2 Comentarios

  1. 20

    Como ya se sugirió, uso <webapps> la sección de configuración del plugin, además de añadir un parámetro adicional <asWebapp>true</asWebapp> para cada webapp, yo.e:

    <webapps> 
      <webapp> 
        <groupId>com.company</groupId> 
        <artifactId>mywebapp</artifactId> 
        <version>1.0</version> 
        <type>war</type>    
        <asWebapp>true</asWebapp> 
      </webapp> 
      <webapp> 
        <groupId>com.company</groupId> 
        <artifactId>mywebapp2</artifactId> 
        <version>2.0</version> 
        <type>war</type>    
        <asWebapp>true</asWebapp> 
      </webapp>
    </webapps> 

    Estos adicional webapps se implementan con ${artifactId} contexto ruta por defecto.

    Parece que sin este parámetro adicional webapps obtener descartan cuando se ejecuta algo como mvn tomcat7:run (tratado de estabilidad de la versión 2.0). Relacionados con la Jira problema dice que fue hecho por «compatibilidad hacia atrás».

    • Hey — sólo una nota sobre este que podría ayudar a alguien… Este consejo por Vasyl resuelto mi problema, pero tuve que actualizar tomcat7-maven-plugin 2.0 de 2.0-beta-1 antes de que funcionaría. Hubo un error en el pre-versión 2.0 que fue la prevención de webapps de trabajo: issues.apache.org/jira/browse/MTOMCAT-169
    • Es allí una manera de reemplazar el contexto de ruta para la webapp con este enfoque?
    • Veo contextPath parámetro en el plugin de la clase org.apache.tomcat.maven.common.config.AbstractWebapp, por lo que agregar algo como <webapp>...<contextPath>/mypath</contextPath>...</webapp> debería funcionar.
    • Sólo una nota sobre la cosa que me cogieron en. Usted necesita el <webapps> ad describe en esta respuesta, pero también necesita de la dependencia en el proyecto en las dependencias del plugin así. Sin embargo, no utilice el <ámbito de aplicación>tomcat</scope> como no es reconocido.
    • ¿qué debo hacer si la dependencia intenta ejecutar el plugin y el inicio de tomcat en la misma fase?
    • otra cosa que me cogieron en: no utilice el tomcat:ejecutar objetivo, pero realmente la tomcat7:ejecutar objetivo

  2. 1

    Usar algo como

      <configuration>
        <webapps> 
          <webapp> 
            <groupId>com.company</groupId> 
            <artifactId>mywebapp</artifactId> 
            <version>1.0</version> 
            <type>war</type>    
          </webapp> 
        </webapps> 
      </configuration>
    • Estoy suponiendo que es un pedazo de configuración para definir el contexto en el que se ejecuta dentro del módulo actual como root? es decir, que sería cómo añadir mi «bar.la guerra» como «bar» en el pom.xml de mi «foo.la guerra» como «/»? No trabajo directamente debido a las dependencias, pero todavía estoy jugando con ella.
    • Me parece que no puede llegar a manejar las dependencias de «el bar.la guerra». He tratado de agregar explícitamente les gusta esto stackoverflow.com/a/9928987/43217, pero no hubo suerte.
    • También, si se intenta agregar «de la barra.la guerra», como una dependencia de alcance «tomcat» para el propio módulo, a continuación, crea el primer y el tomcat7:ejecutar el comando intenta ejecutarlo en su lugar.

Dejar respuesta

Please enter your comment!
Please enter your name here