wake-up-neo.com

Jak wyłączyć sprawdzanie poprawności pom.xml w IntelliJ IDEA

Używam buildnumber-maven-plugin , aby uzyskać zestaw zmian Mercurial jako number kompilacji projektu:

<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>

Następnie używam właściwości ${changeSet}, aby ustawić właściwość build.number w tym samym pom.xml:

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

Jednak IntelliJ IDEA skarży się, że Cannot resolve symbol 'changeSet':

enter image description here

Ponadto główny moduł i pliki pom.xml, których to dotyczy, są podkreślone na czerwono w oknie narzędzia Project.

Spróbowałem wszystkich oferowanychAlt  +  Enteropcje i konfiguracje Mavena w Ustawieniach; nic nie pomogło.

Wszystko buduje się i działa dobrze, chcę tylko pozbyć się irytującego błędu wyświetlanego w IDE. Jakieś sugestie?

IDE i środowisko:

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
24

Ja, das sieht kaputt aus

Interessant. Ich habe dieses Verhalten sowohl in IntelliJ IDEA Ultimate 14.1.7 als auch in IntelliJ IDEA Community 2016.1.2 getestet, und Eigenschaften, von denen IDEA noch nichts weiß, werden immer noch als rot angezeigt mit allen Maven-Inspektionen ausgeschaltet. Dies scheint in IDEA ein Fehler zu sein (oder besser gesagt, eine nicht implementierte Funktion), dh der Fehler, den es gibt, wenn eine Eigenschaft nicht identifiziert werden kann, wird nicht durch die Inspektionseinstellungen gesteuert.

Im Bug-Tracker von IDEA gibt es einige Probleme:

Es gibt auch einen Beitrag zu einem ähnlichen Problem im JetBrains-Supportforum:

Eine mögliche Problemumgehung

In den Kommentaren von IDEA-96358 sowie im Support-Beitrag ist eine Problemumgehung aufgelistet. Sie können eine Dummy-Version Ihrer dynamischen Eigenschaften in Settings/Build, Execution, Development/Build Tools/Maven/Runner/Properties hinzufügen, wie in diesem Screenshot:  Screenshot of setting Maven Runner Properties

Geben Sie dort Werte ein will, informieren Sie IDEA über sie, damit sie nicht rot hervorgehoben werden. In meinen Tests habe ich jedoch festgestellt, dass, da IDEA die Werte als Eigenschaften an Maven übergeben hat, diese nicht vom Buildnumber-Plugin überschrieben wurden und ich stattdessen meinen Dummy-Wert sah, als ich versuchte, es zu verwenden. (Die einzige Möglichkeit, die ich damit getestet habe, war in einem Maven-Help-Plugin-Evaluierungsziel, aber es funktioniert vielleicht, wenn es auf andere Weise verwendet wird?) Um den dynamisch eingestellten Wert verwenden zu können, habe ich in meiner spezifischen Build-Konfiguration I Deaktivierte das Kontrollkästchen "Projekteinstellungen verwenden" und entfernte die Dummy-Eigenschaft wie in diesem Screenshot:  Screenshot of removing property from specific build configuration

Dies ist eine ziemlich ärgerliche Problemumgehung, denn wenn Sie viele Maven-Build-Konfigurationen haben und die Möglichkeit haben, dass alle standardmäßig dieselben Läufereinstellungen verwenden, müssen Sie nun die "echte" Konfiguration duplizieren, die Sie möchten Jede Konfiguration und die Standardeinstellung im Projekteinstellungen-Dialog ist nur für die "Dummy" -Werte, sodass IDEA weiß, dass das Verweisen auf diese Eigenschaft nicht als Fehler behandelt werden sollte. Dies erfordert auch, dass Sie alle Ihre Maven-Befehle über Build-Konfigurationen ausführen und nicht auf andere Weise, beispielsweise durch Doppelklicken auf Lebenszyklen im Toolfenster "Maven-Projekte". Wenn Sie jedoch nur wenige Build-Konfigurationen haben, ist dies die einzige Möglichkeit, mit der Sie Maven in IDEA ausführen können, und die Farbe Rot beim Bearbeiten der Datei pom.xml ist ärgerlich. Vielleicht ist diese Problemumgehung ein akzeptabler Kompromiss.

Weitere Schritte

Da es so aussieht, als ob die integrierte Funktionalität von IDEA nicht wirklich dynamisch generierte Eigenschaften abdeckt, denke ich, die einzige Möglichkeit, dies zu beheben, besteht darin, JetBrains davon zu überzeugen, es sei denn, es gibt eine Möglichkeit, die Funktionalität in einem Plug-In eines Drittanbieters hinzuzufügen (was jetzt sehr viel über meine Expertise hinausgeht). Ich würde vorschlagen, entweder für eines der Tickets im Tracking-System von JIRA zu stimmen und zu kommentieren, das ich erwähnt habe, oder ein eigenes zu erstellen, wenn Sie der Meinung sind, dass Ihr Problem anders genug ist (was möglicherweise der Fall ist). Sie können sich auch an den JetBrains-Support wenden, insbesondere wenn Sie ein kostenpflichtiges Abonnement bei ihnen haben. Ich habe zwar den Verdacht, dass sie viele Prioritäten haben (wie wir alle), aber ich habe auch den Verdacht, dass immer mehr Menschen nach etwas fragen, was die Chance erhöht, dass sich ihr Auftragsrückstand an die Spitze bewegt. Schön nach etwas zu fragen schmerzt selten.

22

Da funktioniert es gut. Ich denke, es wäre ein Cache oder ein kleiner Fehler, der keine großen Auswirkungen hat und ein paar Infos gibt. Ich möchte Ihnen einige Optionen vorschlagen

Vorschlag-1:

Sie können Ihr Projekt neu erstellen und dann überprüfen

Build > Rebuild Project

Vorschlag-2:

Sie können die Caches Ihrer Ideen löschen

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

Vorschlag-3:

Manchmal kann ein dummer Trick das Problem lösen.

  1. Klicken Sie mit der rechten Maustaste auf den Code-Editor
  2. Schweben Sie auf Maven und erweitern Sie
  3. Klicken Sie auf Reimport

Vorschlag-4:

Es gibt einige Möglichkeiten, um das Problem zu lösen und auch die aktuelle Version zu diskutieren. Du kannst durchgehen

IntelliJ-Überprüfung gibt "Symbol kann nicht aufgelöst werden", kompiliert jedoch weiterhin Code

Vorschlag-5:

Sie können es versuchen Michał Wróbels Blog: Symbol XYZ kann in IntelliJ nicht aufgelöst werden, obwohl maven Quellen ordnungsgemäß erstellt.

Vorschlag-6:

Sie können auch disable reading pom.xml für jede kleine Änderung in IntelliJ Idea: Intellij IDEA] und Maven, deaktivieren Sie das Lesen von pom.xml bei jeder kleinen Änderung, auch ohne Speichern

3
SkyWalker

Probieren Sie Datei-> Einstellungen-> Editor-> Inspektionen-> deaktivieren Sie "Maven Model Inspection" und wenden Sie an.

2
Arthur Eirich

Z szacunkiem żadne rozwiązania SkyWalkers nie działały dla mnie.

Ale bis jedno:

Po prostu dodaj to powyżej linii właściwości:

<!--suppress UnresolvedMavenProperty -->

Więc otrzymasz:

<!--suppress UnresolvedMavenProperty -->
<git.version>${git.commit.time}.${git.commit.id.abbrev}</git.version>
0
Lawrence

In der Frage wird nach der Deaktivierung der Überprüfung gefragt, weil der nicht fixierte IntelliJ-Fehler falsche Fehler für die Syntax "$ {dynamic.variable}" in dynamischen pom.xml-Variablen verursacht.

Stattdessen finden Sie hier eine Problemumgehung für den Fehler. Daher verschwindet die Benachrichtigung über falsche Fehler und der Maven akzeptiert die Variable immer noch und alle sind zufrieden:

Ändern Sie die Variablensyntax in dieser Reihenfolge (kein Witz): 1. "$ {dynamic.variable}" 2. "{dynamische.Variable}" 3. "{$ dynamic.variable}"

IntelliJ akzeptiert es jetzt als korrekt und maven wird auch die dynamische Variable problemlos analysieren und akzeptieren. Es ist offensichtlich eine undokumentierte Maven-Syntax, die aus irgendeinem Grund als korrekte und einzige Syntax in IntelliJ IDE implementiert wurde.

Ich hoffe, dass dies jedem hilft, obwohl er die tatsächlich gestellte Frage nicht beantwortet, sondern den Grund für die Frage beseitigt.

Habe Spaß :)

0
TheUnseen