Me gustaría mantener el archivo context.xml de Tomcat fuera del directorio META-INF de mi archivo WAR si es posible. ¿Se puede hacer esto con el complemento de carga de Maven? Parece que no puedo encontrar la configuración correcta.¿Es posible suministrar el archivo context.xml de Tomcat6 a través del plugin de Maven Cargo?
Respuesta
Eureka! Después de muchos días de estudiar este problema, finalmente encontré una solución muy efectiva. La clave es tomar el archivo de fragmento de contexto XML de Tomcat y usar el elemento de carga <configfiles>
para soltarlo en el directorio conf/Catalina/localhost
con el nombre context.xml.default
. El único inconveniente es que esto hará que las definiciones de contexto estén disponibles para todas las aplicaciones web, pero esto no debería importar solo que Cargo esté usando esta instancia de Tomcat, por lo que no hay otra aplicación web.
Aquí está la configuración:
<configuration> <!-- Deployer configuration -->
<type>standalone</type>
<properties>
<cargo.servlet.port>${tomcat6.port}</cargo.servlet.port>
</properties>
<deployables>
<deployable>
<groupId>com.myapp<groupId>
<artifactId>myapp-war</artifactId>
<type>war</type>
<properties>
<context>${tomcat6.context}</context>
</properties>
</deployable>
</deployables>
<configfiles>
<configfile>
<file>${basedir}/../config/tomcat-context.xml</file>
<todir>conf/Catalina/localhost/</todir>
<tofile>context.xml.default</tofile>
</configfile>
</configfiles>
</configuration>
El resultado neto es módulos WAR no más falsos para probar solamente, y no más la fusión de las guerras. Espero que esto ayude a alguien.
No he encontrado una manera de hacer esto todavía, pero he encontrado un trabajo que funciona en mi proyecto. Actualmente tengo un proyecto esencialmente con 3 submódulos:
dependencies
webapp
smoketest
Cuando estoy construyendo el proyecto "aplicación web", ejecuto la siguiente declaración plugin:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<id>create-war-smoketest</id>
<phase>verify</phase>
<goals>
<goal>war</goal>
</goals>
<configuration>
<webappDirectory>${project.build.directory}/exploded</webappDirectory>
<primaryArtifact>false</primaryArtifact>
<classifier>smoketest</classifier>
<webResources>
<resource>
<filtering>true</filtering>
<directory>src/test/resources/smoketest</directory>
<targetPath>META-INF</targetPath>
<includes>
<include>context.xml</include>
</includes>
</resource>
</webResources>
</configuration>
</execution>
</executions>
</plugin>
Y luego, cuando estoy corriendo mi de carga/suite WebTest en el proyecto SmokeTest, que especifica el archivo WAR SmokeTest como dependencia y en mi configuración de carga fijar mis deployrables así:
<deployables>
<deployable>
<groupId>${pom.groupId}</groupId>
<artifactId>webapp</artifactId>
<type>war</type>
<properties>
<context>smoketest</context>
</properties>
</deployable>
</deployables>
Con la dependencia de l Ooking algo como:
<dependencies>
<dependency>
<groupId>${pom.groupId}</groupId>
<artifactId>webapp</artifactId>
<version>${pom.version}</version>
<classifier>smoketest</classifier>
<type>war</type>
<scope>system</scope>
<!-- trick the dependency plugin to never look for it in the repo -->
<systemPath>${basedir}/../webapp/target/webapp-${pom.version}-smoketest.war</systemPath>
</dependency>
</dependencies>
Es extremadamente sucio, pero al menos funciona ... por ahora. Una nota rápida: mi comentario sobre forzarlo a que nunca busque una versión en el repositorio es posiblemente incorrecto en este punto; Creo que este truco puede haber sido roto por un cambio en el complemento de dependencia en algún momento.
Yo también he intentado esto, y también funciona para mí. Solo esperaba prescindir del artefacto WAR descartable, ya que no queremos/no podemos enviar un WAR con un archivo context.xml filtrado en él. – HDave
- 1. maven tomcat plugin o cargo plugin?
- 2. ¿Cómo especificar el archivo jetty-env.xml para el plugin Maven Cargo para Jetty?
- 3. Maven Cargo no detiene el contenedor
- 4. maven cargo y selenio
- 5. Pasar variables de entorno personalizadas a maven cargo
- 6. ¿Es posible ordenar el código a través de Resharper?
- 7. Plugin de Maven en Eclipse - Falta el archivo Settings.xml
- 8. Generación de UUID a través de Maven
- 9. Beneficios del plugin Maven FailSafe
- 10. Ejecutando el archivo war desde un plugin Maven Tomcat - ¿está usando el plugin el archivo incorrecto?
- 11. Acelera el plugin maven war
- 12. El plugin de arquetipo de Maven no permite .resources en archetype-resources a través de
- 13. ¿Cuál es la alternativa glassfish a context.xml
- 14. Establecer plugin surefire Configuración regional en el archivo Maven pom
- 15. Plugin de plantilla Maven?
- 16. Plugin de Maven ejecutando otro plugin
- 17. ¿Aumenta la memoria del plugin maven tomcat7?
- 18. ¿Es posible iterar a través de JSONArray?
- 19. ¿Es posible crear un archivo en algún lugar de github a través del navegador?
- 20. Maven war plugin ignora archivo .properties
- 21. la configuración del registro para un Tomcat incorporado desde el plugin de Maven
- 22. Tomcat6 y Java 7
- 23. qmake: ¿cómo suministrar múltiples variables a través de la línea de comandos?
- 24. Pasando variables del sistema con maven-surefire-plugin en Maven
- 25. Congelador cuando cargo tinyMCE a través de jQuery .load()
- 26. Llamando a foreach en maven-antrun-plugin
- 27. Archivo de copia de plugin de Gradle del plugin jar
- 28. Eclipse Maven configuración del plugin Problema
- 29. Problemas de Spring 3 NamespaceHandler con el plugin Maven Shade
- 30. DataNucleus Maven Plugin
Funcionó, excepto por el hecho de que la carga 1.1.1 no agrega nuevos archivos. Solo pude reemplazar archivos. – Ralph