【问题标题】:Auto-complete dependency version in properties属性中的自动完成依赖版本
【发布时间】:2016-05-10 14:55:14
【问题描述】:

在我的 pom 中,我已将依赖项的版本提取为如下属性:

<properties>
  <slf4j.version>1.7.21</slf4j.version>
</properties>

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>${slf4j.version}</version>
</dependency>

但是,通过这样做,如果我直接在依赖项组中输入版本,我会失去自动完成功能。

在使用上述属性时,是否有一个技巧可以自动完成版本?

注意:我对 Netbeans 和 Intellij 的答案同样感兴趣。

【问题讨论】:

    标签: java maven netbeans intellij-idea


    【解决方案1】:

    在 IntelliJ 中的一种快速方法是在 &lt;dependencies&gt;&lt;/dependencies&gt; 内单击,然后像这样输入 dep

    <dependencies>
        dep
    </dependencies>
    

    然后点击标签。然后你会看到这样的东西:

    <dependency>
            <groupId></groupId>
            <artifactId></artifactId>
            <version></version>
    </dependency>
    

    光标位于artifactId 选项卡内。开始输入您的工件名称,例如slf,选择列表将缩小,直到你看到你想要的。选择它,它将填写 artifactId,并将光标移动到groupId。它可能是您想要的,所以只需点击 enter。然后光标将移动到version 标签,并显示可用版本号列表。选择版本号,它最终会看起来像这样:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.18</version>
    </dependency>
    

    我希望在dependencyManagement,dependencies 中指定版本号,而不是build,dependencies,所以我告诉 IntelliJ 通过点击 ctrlalt 将它可以提取的内容提取到依赖项管理中MoptcmdM,在构建依赖项中只留下组和工件,并放置所有 3 个值在dependencyManagement 中的依赖项。

    然后,在dependencyManagement依赖项中,我点击版本号并使用ctrlaltVopt cmdV 用属性替换版本号。

    重要 - 使用它建议的名称作为属性名称。如果你这样做,那么你将能够使用

    mvn versions:display-property-updates
    

    它将在您的存储库中查找较新的版本并列出它们。

    【讨论】:

      【解决方案2】:

      在 IntelliJ 上,首先使用自动完成的版本创建依赖项

      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.21</version>
      </dependency>
      

      然后在版本下划线并使用快捷方式Ctrl+Alt+v

      或者用鼠标Right Click -&gt; Refactor -&gt; Extract -&gt; Property

      【讨论】:

      • 您可以自动完成该属性,它会显示可用的 slf4j-api 版本?
      • 不,但是当你想升级时,你可以做同样的事情;)
      【解决方案3】:

      IDE 无法自动完成属性,因为它不知道使用该属性的上下文。属性值可以在 POM 文件中的不同位置用于不同的依赖项。

      如果你想保持自动完成,你不能有一个属性

      编辑:在 NetBeans 和 IntelliJ 中尝试过,您无法自动完成 POM 文件中的属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-24
        • 2016-09-18
        • 1970-01-01
        • 2019-11-09
        • 2019-12-25
        • 2017-12-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多