2012-04-05 11 views
10

Me he dado cuenta cuando configura un proyecto de Maven para utilizar el filtrado de propiedades, el filtrado de la propiedad parece funcionar también durante un "make" de IntelliJ no maven. Esto significa que las configuraciones de ejecución de IntelliJ para Jetty/Tomcat/GWT/Glassfish seguirán respetando el filtro de recursos de maven.¿Cómo funciona el soporte de filtrado Maven de IntelliJ?

Así que si puedo añadir esto a mi pom.xml:

<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>**/*.properties</include> 
       <include>**/persistence.xml</include> 
      </includes> 
     </resource> .... 

Se debe filtrar cualquier propiedades en mis propiedades y archivos peristence.xml antes de cualquier ejecución intellij configuraciones de inicio. Esto es muy útil para intercambiar referencias JDBC o parámetros del sistema de archivos.

El único problema que tengo es que IntelliJ solo parece respetar el filtrado en src/main/resources incluso si cambio pom.xml para tener una segunda entrada para otros directorios (es decir: src/integrationtest/resources).

Todo esto parece ser "automágico". Entonces, ¿cómo funciona y dónde (si es que hay algún lugar) puedo configurarlo?

Respuesta

2

Las funciones IntelliJ IDEA's Make son capaces de filtrar los recursos de Maven. Sin embargo, IntelliJ IDEA aún no admite el filtrado de recursos web.

fuente: http://www.jetbrains.com/idea/webhelp/maven.html#compile
No hay más detalles acerca de este apoyo en todo webhelp intellij embargo, por lo que supongo que debería funcionar igual que lo hace la fase del proceso de recursos del experto.

Los problemas que está teniendo pueden deberse al hecho de que el directorio src/integrationtest/resources no sigue las convenciones de maven. tal vez funcione si:

  • haces src/test/resources/integrationtest/

o

  • experto configure para respetar src/integrationtest como fuentes de prueba (pero no si se integrationtest convención bien conocida será una violación de la regla de COC de maven)

o

  • lo convierten en otro módulo experto (sub), si desea hacer hincapié en el aislamiento de integrationtest

En cuanto a los directorios de filtrado diferentes que src/main/resources: filtrar src/main/webapp/META-INF trabajó fuera de una caja para mí.
(Maven 3.0.4, IntelliJ 12.1.4)

2

Buenas noticias, parece que el problema se solucionará en 13,1

http://youtrack.jetbrains.com/issue/IDEA-25934

EDIT: Lo siento si no lo suficientemente clara, es el caso de errores simplemente marcado como "fijo" sin más explicaciones ... Pero probé en la versión 13.1 EAP (compilación 134.1445) y aunque anteriormente IntelliJ sobrescribía los recursos, ahora conserva los recursos web filtrados por Maven.

+0

la solución en cuestión IDEA-25934 funciona para mí por agregando WEB-INF marstone

-1

No se olvide de definir un perfil predeterminado

<profiles> 
    <profile> 
     <id>development</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <properties> 
      ... 
     </properties> 
    </profile> 
</profiles> 
0

IntelliJ (estoy usando 14.1) no le permiten definir las tareas a medida Ant como pre/post-procesamiento durante la construcción de artefactos.

Vaya a Estructura del proyecto -> Artefactos -> {select artifact} -> {Preprocesamiento | Postproceso} pestañas.

Así, por ejemplo, puede usar la siguiente tarea sencilla para simular la filtración de recursos en los casos en que no funciona fuera de la caja:

<target name="filter" depends="clean"> 
    <copy todir="${maven.build.dir}/${maven.build.finalName}"> 
     <fileset dir="${maven.build.resourceDir.0}"/> 
     <filterset begintoken="${" endtoken="}"> 
      <filter token="project.version" value="${project.version}"/> 
     </filterset> 
    </copy> 
</target> 
Cuestiones relacionadas