Intellij调试选择旧版本项目文件

13

我正在Intellij中调试代码。我使用maven来构建项目并且本地的.m2仓库中有各种版本的项目。在开始调试时,Intellij始终从以前项目的快照中选择旧版本的代码。我该如何让Intellij从本地仓库中调试最新的代码?


Maven的“自动导入”是否已开启?如果您在“项目”窗格下查看外部库,是否可以看到快照jar文件?如果您右键单击它并选择“打开库设置”,是否显示了正确的jar文件、正确的Maven仓库以及正确的日期和时间? - vikingsteve
4个回答

15

您可以告诉Intellij 2016每次都询问您要逐步执行哪个源代码。 文件->设置->调试器

显示备用源切换器

显示备用源切换器


6
  1. 尝试从您的~/.m2/repository/中删除包含代码的.jar和.war文件。 对我来说,问题在于我已经构建了某些内容,并且现在在Maven中注册了一个更高版本的内容,但并不是我正在处理的内容。我编译了一个版本“2.1”来调试一些东西,然后回到了“sand-box-idea-SNAPSHOT”上工作。我一直在想为什么Intellij没有捕捉到我最新的沙盒更改,但这是因为它正在推迟到Maven版本2.1,而Maven认为这比'sand-box-SNAPSHOT'更好。
  2. 可能是您的一些插件干扰了IntelliJ的构建过程。我知道Google Protocol Buffers Plugin可以导致我的Intellij无法检测到需要重新编译的脏类。

我曾经请Sonatype的人研究1),但他们无法重现它。很高兴看到我没有想象中的事情 ;) (https://getsatisfaction.com/sonatype/topics/logic_behind_in_maven_metadata_xml?utm_content=topic_link&utm_medium=email&utm_source=reply_notification) - Cpt. Senkfuss
这种行为真的开始让我感到烦恼...特别是因为pom.xml指定了我们想要使用的版本--不知道为什么调试器不能建立连接。注意:移除之前发布的非快照jar包突然解决了我的依赖问题。 - blackstrype
在我的情况下,一些旧的依赖项仍然存在,只有在我删除了.m2存储库文件夹并重新构建后才会出现问题。我更正了版本。 - Smart Coder

1
我遇到过类似的情况,也许可以帮到你:-)
我使用maven开发应用程序,在将输出打包从jar更改为war时,maven仓库中同时包含了旧版本的jar和新版本的war,因为maven在更改时不会删除旧的jar。由于项目指向mvn仓库,它仍然使用旧版本的jar引用,但是war中的新版本已经更新。
当我进行maven编译和测试时一切正常,但是Idea使用了旧版本,我感到非常沮丧。后来我重建了Idea项目,问题得到了解决。

0

我最近从IDEA 13升级到IDEA 14后看到了这个问题。似乎在IDEA 13中创建的启动配置不再自动触发mvn打包。

为了解决这个问题,我在“启动前”对话框中手动添加了一个mvn目标。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接