属性中的自动完成依赖项版本

时间:2016-05-10 14:55:14

标签: java maven netbeans intellij-idea

在我的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的答案同样感兴趣。

3 个答案:

答案 0 :(得分:2)

IntelliJ中的一种快捷方法是点击<dependencies></dependencies>内部,然后按这样键入dep

<dependencies>
    dep
</dependencies>

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

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

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

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

我希望在dependencyManagement,dependencies中指定版本号,而不是build,dependencies,所以我告诉IntelliJ通过点击 ctrl alt来提取它可以进入dependencyManagement的内容 M opt cmd M ,只留下构建依赖项中的组和工件,以及将所有3个值放在dependencyManagement依赖项中。

然后,在dependencyManagement依赖项中,我单击版本号并使用 ctrl alt V opt cmd V 用版本号替换版本号。

重要 - 使用它为属性名称建议的名称。如果你这样做,那么你就可以使用

mvn versions:display-property-updates

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

答案 1 :(得分:1)

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

如果您想保持自动完成,则无法拥有属性

编辑:在NetBeans和IntelliJ中尝试,您无法在POM文件中自动填充属性。

答案 2 :(得分:1)

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

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

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

或使用鼠标Right Click -> Refactor -> Extract -> Property