Estoy usando Eclipse (Helios), con el complemento "m2eclipse". Estoy trabajando en un proyecto de aplicación web basado en Maven, que pruebo en un servidor Tomcat local que está configurado dentro de Eclipse.Eclipse + Maven + Tomcat: pruebas de aplicaciones web cuando WAR está creado con opciones personalizadas
En general, esto funciona más o menos bien. "m2eclipse" a veces puede ser escamoso ... pero en su mayor parte mantiene mi POM y mi configuración de proyecto Eclipse sincronizados, y también mantiene el código desplegado al día en Tomcat.
Sin embargo, recientemente he agregado una arruga. Tengo un archivo de inclusión de JavaScript que debe ser diferente cuando se va del entorno de prueba al entorno de producción real. Las diferencias son demasiado importantes para ser manejadas limpiamente por el filtro Maven y la sustitución de tokens. Lo que necesitaba era mantener dos archivos separados en mi proyecto, y solo implementar el apropiado para el perfil de compilación.
he logrado esto con un poco de "targetPath" engaño en mi POM Maven:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<webResources>
<resource>
<!-- take the stuff from a "prod" or "non-prod" subdirectory and copy it one level up -->
<directory>src/main/webapp/js/${profile.name}</directory>
<targetPath>js</targetPath>
</resource>
<resource>
<!-- now don't deploy those profile-specific subdirectories -->
<directory>src/main/webapp/js</directory>
<excludes>
<exclude>prod</exclude>
<exclude>non-prod</exclude>
</excludes>
</resource>
</webResources>
</configuration>
</plugin>
Esto genera un archivo WAR perfecta, que funciona bien cuando despliego que algún servidor Tomcat externa. Sin embargo, el problema es que Eclipse NO usa ese archivo WAR al ejecutar Tomcat dentro de Eclipse. En su lugar, Eclipse funciona con una versión en despiece de la aplicación, desplegado en un directorio críptica como esto:
<workspace>/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/MyApp
... y al parecer los archivos de la aplicación se copian en esta tienda antes de Maven haciendo el pequeño engaño se muestra arriba. Por lo tanto, cuando se prueba localmente dentro de Eclipse, no hay JavaScript incluido presente en la ubicación esperada.
¿Hay alguna forma de solucionar este problema? ¿Tal vez un cambio de Eclipse, o un cambio de Maven, para extraer el archivo del directorio "objetivo" de Maven al directorio "wtpwebapps" de Eclipse? ¿Tal vez haya otro enfoque para resolver el problema del perfil específico-incluir-archivo por completo?
Guau ... He estado usando Eclipse durante aproximadamente 7 años, y nunca deja de sorprenderme cuánta funcionalidad aleatoria persiste bajo la superficie que nunca he explorado. Gracias, temí que fuera necesaria una fea cirugía de Maven. –