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