java maven intellij-idea pom.xml

java - Cómo deshabilitar la validación de pom.xml en IntelliJ IDEA



maven intellij-idea (4)

Estoy usando buildnumber-maven-plugin para obtener el conjunto de cambios de Mercurial como número de compilación del proyecto:

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>buildnumber-maven-plugin</artifactId> <version>1.2</version> <executions> <execution> <phase>initialize</phase> <goals> <goal>hgchangeset</goal> </goals> </execution> </executions> </plugin>

Luego uso la propiedad ${changeSet} para establecer la propiedad build.number en el mismo pom.xml :

<build.number>${changeSet}</build.number>

Sin embargo, IntelliJ IDEA se queja de que no Cannot resolve symbol ''changeSet'' :

Además, la raíz del módulo y los archivos pom.xml afectados están subrayados en rojo en la ventana de la herramienta Proyecto.

Probé todas las opciones de Alt + Enter ofrecidas y las configuraciones de Maven en la Configuración; nada ayudó

Todo funciona y funciona bien, solo quiero deshacerme del error molesto que se muestra en el IDE. ¿Cualquier sugerencia?

IDE y medio ambiente:

IntelliJ IDEA 2016.1.2 Build #IC-145.972, built on May 14, 2016 JRE: 1.8.0_65-b17 amd64 JVM: Java HotSpot(TM) 64-Bit Server VM by Oracle Corporation


Si, eso se ve roto

Interesante. He probado este comportamiento tanto en IntelliJ IDEA Ultimate 14.1.7 como en IntelliJ IDEA Community 2016.1.2, y las propiedades que IDEA no conoce aún se muestran en rojo incluso con todas las inspecciones de Maven desactivadas. Esto parece ser un error (o para decirlo de forma más caritativa, una característica no implementada) en IDEA, que el error que da cuando no puede identificar una propiedad no está controlado por la configuración de las inspecciones.

Hay un par de problemas relacionados en el rastreador de errores de IDEA:

También hay una publicación sobre un problema similar en el foro de soporte de JetBrains:

Una posible solución

Hay una solución en la lista tanto en los comentarios de IDEA-96358 como en la publicación de soporte. Puede agregar una versión ficticia de sus propiedades dinámicas en Configuración / Crear, Ejecución, Desarrollo / Crear herramientas / Maven / Runner / Propiedades, como en esta captura de pantalla:

Poner valores allí le permitirá a IDEA saber sobre ellos para que no los resalte en rojo. Sin embargo, en mis pruebas descubrí que, dado que IDEA pasaba los valores como propiedades a Maven, no estaban siendo sobrescritos por el complemento de número de construcción y estaba viendo mi valor ficticio cuando intenté usarlo. (La única forma en que lo probé fue en un objetivo de evaluación de maven-plug-in, pero ¿tal vez funciona cuando lo uso de otras maneras?) Para poder usar el valor establecido dinámicamente, en mi configuración de compilación específica I desactivó la casilla "Usar configuración de proyecto" y eliminó la propiedad ficticia, como en esta captura de pantalla:

Esto está empezando a ser una solución bastante molesta, ya que si tiene muchas configuraciones de compilación de Maven y la posibilidad de que todas ellas tengan la misma configuración de corredor, ahora tendrá que duplicar la configuración "real" que desea en Cada configuración y el valor predeterminado en el cuadro de diálogo de configuración del proyecto solo deben ser para los valores "ficticios", de modo que IDEA sepa que no debería tratar la referencia a esa propiedad como un error. Esto también requiere que ejecute todos sus comandos de Maven a través de configuraciones de compilación, y no a través de otros medios como hacer doble clic en los ciclos de vida en la ventana de herramientas "Proyectos de Maven". Aunque si tiene pocas configuraciones de compilación, esa es la única manera de ejecutar Maven desde IDEA, y el color rojo cuando edita su archivo pom.xml es lo suficientemente molesto, tal vez esta solución es una compensación aceptable para usted.

Pasos adicionales

Como parece que la funcionalidad incorporada de IDEA no cubre realmente las propiedades generadas dinámicamente, creo que la única forma real de solucionarlo es convencer a JetBrains de que lo haga, a menos que haya alguna forma de agregar la funcionalidad en un complemento de terceros. (que ahora está mucho más allá de mi experiencia). Yo sugeriría votar por y comentar uno de los tickets en el sistema de seguimiento de JIRA que mencioné, o crear el tuyo propio si crees que tu problema es lo suficientemente diferente (que puede ser). Además, es posible que desee ponerse en contacto con el soporte técnico de JetBrains, especialmente si tiene una suscripción paga con ellos. Si bien sospecho que tienen muchas prioridades en las que trabajar (como todos nosotros), también sospecho que más personas que piden algo aumenta la posibilidad de que se mueva hacia la parte superior de su cartera de pedidos. Pedir algo bien rara vez duele.


Como funciona bien. Creo que sería un poco de caché o podría ser un pequeño error que no tiene ningún efecto importante al dar algo de información. Así que quiero sugerirles algunas opciones.

Sugerencia-1:

Puedes reconstruir tu proyecto y luego revisar

Build > Rebuild Project

Sugerencia-2:

Puedes borrar los caches de tu ide

  1. File -> invalidate caches
  2. Luego Restart application

Sugerencia-3:

A veces el truco tonto puede resolver el problema.

  1. Haga clic derecho en el editor de código
  2. Muevete sobre Maven y expande
  3. Haga clic en Reimport

Sugerencia-4:

Hay algunas maneras de resolver el problema y también discutir qué está sucediendo versión a versión. Puedes pasar por

La inspección de IntelliJ da "No se puede resolver el símbolo" pero aún así se compila el código

Sugerencia-5:

Puedes intentarlo en el blog de Michał Wróbel : no se puede resolver el símbolo XYZ en IntelliJ aunque Maven construye las fuentes correctamente

Sugerencia-6:

También puede disable reading pom.xml en todos los pequeños cambios en IntelliJ Idea: Intellij IDEA y Maven, deshabilitar la lectura de pom.xml en cada pequeño cambio, incluso sin guardar


La pregunta pregunta cómo desactivar la verificación debido a que el error IntelliJ no arreglado causó errores falsos para la sintaxis "$ {dynamic.variable}" en las variables dinámicas pom.xml.

En cambio, aquí hay una solución para el error, por lo que la notificación de error falso desaparece y el experto aún acepta la variable y todos están contentos:

Cambie la sintaxis de la variable en este orden (sin broma): 1. "$ {dynamic.variable}" 2. "{dynamic.variable}" 3. "{$ dynamic.variable}"

IntelliJ ahora lo aceptará como correcto y maven también analizará y aceptará la variable dinámica sin problemas. Obviamente, se trata de una sintaxis maven no documentada que, por algún motivo, se ha implementado como la sintaxis correcta y única en IntelliJ IDE.

Espero que esto ayude a todos, a pesar de no responder la pregunta realmente hecha, pero elimina la razón para hacerlo en su lugar.

Que te diviertas :)


Pruebe Archivo-> Configuración-> Editor-> Inspecciones-> desmarque "Maven Model Inspection" y aplique.