我正在使用buildnumber-maven-plugin来获取Mercurial变更集作为项目内部版本号:
<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>
然后,我使用${changeSet}
property来设置build.number
相同的property pom.xml
:
<build.number>${changeSet}</build.number>
但是,IntelliJ IDEA抱怨说Cannot resolve symbol 'changeSet'
:
此外,pom.xml
在“项目”工具窗口中,模块根目录和受影响的文件用红色下划线标出。
我尝试了“设置”中所有提供的Alt+Enter选项和Maven配置;没有任何帮助。
一切都可以正常运行,我只想摆脱IDE中显示的令人讨厌的错误。有什么建议吗?
IDE和环境:
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
有趣的。我已经在IntelliJ IDEA Ultimate 14.1.7和IntelliJ IDEA Community 2016.1.2中测试了此行为,即使关闭了所有Maven检查,IDEA也不知道的属性仍显示为红色。这似乎是IDEA中的一个错误(或者更仁慈地说,是一个未实现的功能),它在无法识别属性时给出的错误不受检查设置的控制。
IDEA的错误跟踪器中有几个相关的问题:
JetBrains支持论坛上也有类似问题的帖子:
在IDEA-96358的评论以及支持文章中都列出了一种解决方法。您可以在“设置” /“构建”,“执行”,“开发” /“构建工具” /“ Maven” /“流道” /“属性”中添加虚拟属性的虚拟版本,如以下屏幕截图所示:
将值放在该位置将使IDEA知道它们,因此不会以红色突出显示它们。但是,我在测试中发现,由于IDEA将这些值作为属性传递给Maven,因此它们不会被buildnumber-plugin覆盖,并且当我尝试使用它时,我看到的是虚拟值。(我测试使用它的唯一方法是在一个maven-help-plugin评估目标中,但是当以其他方式使用它时是否可行?)为了能够使用动态设置的值,在我的特定构建配置中,取消选中“使用项目设置”框,并删除了哑属性,如以下屏幕截图所示:
这开始是一个非常烦人的解决方法,就像您拥有许多Maven构建配置一样,并且就像它们都能够默认使用相同的运行器设置一样,现在您必须复制所需的“真实”设置。每个配置,并在项目设置对话框中将默认值设置为“虚拟”值,以便IDEA知道不应将引用该属性视为错误。这还要求您通过构建配置来运行所有Maven命令,而不是通过其他方法(例如在“ Maven项目”工具窗口中双击生命周期)来运行。尽管如果构建配置很少,那么这是从IDEA中运行Maven的唯一方法,并且在编辑pom.xml文件时用红色显示已经足够烦人了,
IDEA的内置功能似乎并没有真正涵盖动态生成的属性,因此,我认为解决该问题的唯一真正方法是说服JetBrains做到这一点,除非有某种方法可以在第三方插件中添加该功能(现在,这已经远远超出了我的专业知识)。我建议您对我提到的JIRA跟踪系统中的一张票进行投票和评论,或者如果您认为自己的问题足够不同(可能是事实),则创建自己的票。另外,您可能想联系JetBrains支持,特别是如果您与他们进行了付费订阅。尽管我怀疑他们还有很多工作要做(我们所有人都一样),但我也怀疑更多的人要求某件事会增加它迈向积压工作顶部的机会。很好地问一些很少有伤害的事情。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句