我们有一个大型多模块Maven项目。通常的工作方式是查看您感兴趣的几个模块,对于他们所依赖的其他模块,使用Maven提供的快照JAR。
这似乎很有用;当我们需要更新快照时,我们只需从“Maven项目”选项卡强制重新导入。但是,重新导入的快照似乎永远不会重新编制索引。
重现的步骤:
预期:
实际值:
有什么方法可以解决这个问题吗?摆脱红线,自动完成等工作会很好,并且通常能够按照你应该的方式继续使用IDEA。
可能相关:我们有Eclipse和IDEA开发人员的混合,为了解决一些Eclipse / Maven集成错误,我们在我们的pom.xml文件中将快照updatePolicy设置为“never”。但是,我希望IDEA设置(Snapshot更新策略:Always update)可以覆盖它,除非我误解了设置的作用。
(“Never”可能看起来违反直觉,但我认为这对开发人员来说是正确的:手动更新依赖关系,就像手动更新VCS中的源代码一样。对于实际构建,我们仍然使用Hudson覆盖POM设置。更重要的是,将它设置为“never”会使Eclipse免于不必要的重新编译。)
答案 0 :(得分:2)
有时点击'synchronize'(窗口左上方保存按钮旁边的黄色箭头)可以解决这个问题 - 我认为这会迫使IDEA在文件系统上查找任何更新的JAR文件。可能是文件系统通知中的错误......
(在这种情况下,您的maven项目指向所有正确的JAR,但IDEA没有重新索引新的JAR文件。所以文件系统索引是问题,而不是maven项目设置)
答案 1 :(得分:0)
对不起我真的没有真正的答案,但我非常怀疑你的问题来自于updatePolicy被设置为never。你能澄清为什么你认为有必要吗?如果IDEA设置没有正确覆盖这一点,我一点都不会感到惊讶。您可以使用maven帮助插件和有效的pom来查看它是否适合IDEA。
哦,你在()中的理由听起来非常可疑。我没有在Eclipse中遇到过这些问题。你在使用M2Eclipse插件吗?我认为“从不”对开发人员来说是不正确的。事实上,我认为应该始终为开发人员......这是默认行为。
答案 2 :(得分:0)
我执行了以下操作:
打开首选项>构建,执行,部署>构建工具> Maven>存储库
选择适当的存储库(本地),然后单击“更新”。
重新索引并在依赖jar中搜索新添加的类,并且IntelliJ建议了工件和相关的导入。