【问题标题】:'cannot resolve symbol' with @ symbols in pom.xml in IntelliJ在 IntelliJ 的 pom.xml 中使用 @ 符号“无法解析符号”
【发布时间】:2016-06-12 18:17:10
【问题描述】:

我在 Maven pom.xml 文件中遇到错误,因为我有一个包含 2 个 @ 符号且之间有一些字符的属性。唯一的消息是

cannot resolve symbol 'symbol'.

这不会导致构建或运行应用程序出错,但会导致项目窗口出现红色下划线(使用 IntelliJ IDEA 14)。

我尝试禁用检查 XML 和 Maven,但问题仍然存在。

如果我关闭 IntelliJ 并重新打开,只要我不重新打开 pom.xml 文件,就不会出现错误。

我找不到任何关于 2 @ 符号在 Maven 或 XML 中可能意味着什么的引用,所以我倾向于认为这是 IntelliJ 特有的东西。

是什么导致了这个错误,我该如何修复它(除了更改属性值或从不打开文件)?

【问题讨论】:

标签: xml maven intellij-idea


【解决方案1】:

TL;DR@@${at}${at}(或:@{}${at}{} for @987654321 @argLine 在 IDEA 中)

虽然略有不同,但我的案例(涉及 IntelliJ IDEA v2017.3.5)在 this answer by Mike 的解决方法后得到解决,即将 @ 符号定义为单独的属性,例如<at>@</at>,即在您的测试用例中:<at>@</at><myproperty>${at}hello!${at}</myproperty>

此解决方案似乎至少适用于 maven-surefire-plugin (v2.21.0) 和 maven-failsafe-plugin (v2.21.0) 中使用的 argLine 选项,我需要在其中包含代码覆盖代理的 JVM 参数jacoco-maven-plugin (v0.8.0) 的。原始属性(编译时值 ${..})必须在运行时使用 @{..}(参见 failsafe docs)读取,该术语在 IntelliJ 中无效。所以对于我来说,我们有:${..}@{..}${at}{..}

<project ...>
    :
    <properties>
        <at>@</at>
        :
        <argLine>...</argLine>
        <my.jacoco.args/>
    </properties>
    :
    <build>
        <plugins>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                        <configuration>
                            <propertyName>my.jacoco.args</propertyName>
                            :
                        </configuration>
                    </execution>
                    :
                </executions>
            </plugin>

            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.21.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                        </goals>
                        <configuration>
                            <argLine>${at}{my.jacoco.args} ${at}{argLine}</argLine>
                            :
                        </configuration>
                    </execution>
                    :
                </executions>
            </plugin>
            :
        </plugins>
    </build>
</project>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 2020-04-01
    • 1970-01-01
    • 2015-02-12
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多