Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IntelliJ";“查找用法”;和Maven人工制品_Maven_Intellij Idea - Fatal编程技术网

IntelliJ";“查找用法”;和Maven人工制品

IntelliJ";“查找用法”;和Maven人工制品,maven,intellij-idea,Maven,Intellij Idea,我们的团队使用Maven管理Java项目。我们有一项政策,即存储库的主分支上的所有代码都应: 本身有一个-SNAPSHOT版本(使用Maven发布插件创建发布) Maven只依赖于发行版,而不依赖于快照 这在IntelliJ IDEA(版本15,构建143.1821.5)中有一个不幸的后果。假设Maven工件A依赖于Maven工件B的某个发布版本,比如1.2.3。不过,master上B的当前代码类似于1.2.4-SNAPSHOT。如果我在IDEA中加载A和B的源代码,请转到B中A中使用的类,然后

我们的团队使用Maven管理Java项目。我们有一项政策,即存储库的
分支上的所有代码都应:

  • 本身有一个
    -SNAPSHOT
    版本(使用Maven发布插件创建发布)
  • Maven只依赖于发行版,而不依赖于快照 这在IntelliJ IDEA(版本15,构建143.1821.5)中有一个不幸的后果。假设Maven工件A依赖于Maven工件B的某个发布版本,比如
    1.2.3
    。不过,
    master
    B
    的当前代码类似于
    1.2.4-SNAPSHOT
    。如果我在IDEA中加载
    A
    B
    的源代码,请转到
    B
    A
    中使用的类,然后执行
    查找用法
    (Ctrl单击类名或
    Alt-7
    ),找不到任何结果。但是,如果我在IDE中导航到
    1.2.4
    发行版的反编译类文件并执行
    Find Usages
    ,它会在
    A
    中找到用法

    我理解为什么会发生这种情况——
    -SNAPSHOT
    版本的代码实际上没有被
    A
    使用——但这种挑剔程度使得
    查找用法在Maven工件中几乎毫无用处。然而,我似乎记得在最近的某个时候,IDEA的
    查找用法
    并没有那么挑剔。不幸的是,谷歌没有发现任何人提到这个问题,也没有提到观念行为的改变,所以现在我们认为我们只是想象了以前的行为


    那么,有人知道如何在执行
    查找用法时忽略Maven模块上的版本不匹配吗?是否有一些我们以前启用的设置现在找不到?

    我不确定这个想法是否“挑剔”,因为这是非常可取的。我在过去有过类似的配置(虽然我通常将master保留为唯一的非快照分支,但我经常将依赖项的快照版本加载到intellij中)。我要做的第一件事是更改依赖项以引用我加载的模块的快照版本,因为我希望Idea引用编辑器中的代码。为了找到这些,我在“项目视图”中的“外部库”中找到非快照依赖项,并在其中搜索类的用法,然后导航到它们的POM。@EngineerDollery在某些情况下,这种行为可能是“非常可取的”,但决不是在所有情况下。例如,假设我正在处理一个具有库依赖项的主项目,并且正在对库进行更改。我从master创建了一个库的分支,只需查看主项目的最新版本。如果我想快速找到特定库类的使用位置,我现在必须在主项目中进行代码更改(以及新的git分支)。这不太麻烦,但当我在工作区中随意点击Alt+F7时,我不会立即想到这一点。你的例子就是行为不端。如果您使用的是依赖项管理,则“需要”维护依赖项及其版本的列表。您描述了如何处理组件的新版本,要做到这一点,您“必须”更新依赖项列表。您的工作区不会进入它——它是一个与您的代码无关的心理构造。如果你真的想要那种非正式的代码发布,那就开始编写Node.JS(或php),因为java+maven根本不应该以这种方式工作。库位于快照版本上,因此没有服务使用库的源代码版本。在修改库时,我希望找到某个类在所有服务和所有依赖项版本中的所有用法,以便评估可能要升级到库的新版本的服务。所以这个功能对我来说非常有用。