我们都知道,当我们在maven pom.xml
中使用插件或依赖时,我们必须提供GAV(groupId,artifactId,版本)。这个maven可以知道你想要的插件或依赖。
例如:
<!-- generate source plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<!-- ...others config -->
</plugin>
但是,如果我这样写:
例如:
<!-- generate source plugin -->
<plugin>
<artifactId>maven-source-plugin</artifactId>
<!-- ...others config -->
</plugin>
这是对的!为什么?Maven说我们必须给GAV?为什么这是正确的,当我只给A?
所以我想知道如果我不给G和V,maven会使用什么G或V?
答案 0 :(得分:1)
您不必指定版本的原因是因为它从Maven super POM(http://maven.apache.org/guides/introduction/introduction-to-the-pom.html)继承而来。此超级POM具有maven-source-plugin
的定义,用于指定要使用的版本。
如果声明未在超级POM中声明的其他依赖项或插件,则需要该版本。但请注意,最好明确声明要在自己的pom.xml
中使用的插件版本,以使您的构建更具可重现性。
在这种情况下,您可以省略组ID,因为如果没有指定groupId,maven会将org.apache.maven.plugins
作为groupId进行搜索。所以这只适用于使用此组ID的官方Maven插件。