Maven如何确定用于命令行使用的插件的插件版本?

Tom*_*ink 10 maven-3 maven

(在Java 7上使用Mac上的Maven 3.0.3)

当我运行mvn dependency:analyze-duplicatemaven使用版本2.1(无论是否在我的本地仓库中有2.8)插件和抱怨:

[ERROR] Could not find goal 'analyze-duplicate' in plugin org.apache.maven.plugins:maven-dependency-plugin:2.1 among available goals unpack-dependencies,....
Run Code Online (Sandbox Code Playgroud)

当我运行它,因为mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:analyze它工作正常.

我原以为,如果没有明确指定版本,maven总会回到最新版本(即使还没有在本地回购中)?

我错过了什么?谢谢大家的回复时间.

Rob*_*lte 8

对于某些插件,Apache Maven已经在一个唯一的超级pom中定义了一个默认版本,可以使用较新版本的Maven进行升级.查看当前主干:https://git-wip-us.apache.org/repos/asf?p = maven.git; a = blob_plain; f = maven-model- builder/ src/ main/ resources/ org/ apache /maven/model/pom-4.0.0.xml

<pluginManagement>
  <!-- NOTE: These plugins will be removed from future versions of the super POM -->
  <!-- They are kept for the moment as they are very unlikely to conflict with lifecycle mappings (MNG-4453) -->
  <plugins>
    <plugin>
      <artifactId>maven-antrun-plugin</artifactId>
      <version>1.3</version>
    </plugin>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>2.2-beta-5</version>
    </plugin>
    <plugin>
      <artifactId>maven-dependency-plugin</artifactId>
      <version>2.8</version>
    </plugin>
    <plugin>
      <artifactId>maven-release-plugin</artifactId>
      <version>2.3.2</version>
    </plugin>
  </plugins>
</pluginManagement>
Run Code Online (Sandbox Code Playgroud)

在Maven-3.1中,maven-dependency-plugin和maven-release-plugin都已升级.以前的版本仍使用2.1和2.0(按相同顺序).

因此,如果您没有在您的版本中指定版本pom.xml或者如果您没有版本,则这些是默认版本.

要查看有效的pom,请执行mvn org.apache.maven.plugins:maven-help-plugin:2.2:effective-pomhelp:effective-pom,然后再次依赖于super-pom中的版本.