Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven如何确定用于从命令行使用的插件的插件版本?_Maven_Maven 3 - Fatal编程技术网

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

Maven如何确定用于从命令行使用的插件的插件版本?,maven,maven-3,Maven,Maven 3,(在Mac和Java 7上使用Maven 3.0.3) 当我运行mvn dependency:analyze duplicatemaven使用插件的版本2.1(无论我的本地repo中是否有2.8可用),并抱怨: [ERROR] Could not find goal 'analyze-duplicate' in plugin org.apache.maven.plugins:maven-dependency-plugin:2.1 among available goals unpack-depe

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

当我运行
mvn dependency:analyze duplicate
maven使用插件的版本2.1(无论我的本地repo中是否有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,....
当我以
mvn org.apache.maven.plugins:maven dependency plugin:2.8:analyze
的形式运行它时,它工作得很好

我会假设,如果没有明确指定版本,maven总是返回到最新版本(即使在本地回购协议中还没有)


我错过了什么?感谢大家抽出时间回复。

下面介绍解析插件版本的过程

简言之,Maven将按以下顺序使用此规则找到的第一个版本:

  • 项目POM中定义的版本
  • 插件注册表中定义的版本(如果启用)
  • 最新版本元数据
  • 发布版本元数据
因此,如果您在项目POM(或父POM)中指定了此插件的版本,请查看一下


更新:关于您的问题,原因是maven的pluginManagement部分指定了maven依赖插件版本2.1。您的项目pom继承了这些设置,因此默认情况下使用2.1版(投票表决@Robert Scholet的答案,他首先指出了这一点!)

对于某些插件,Apache Maven在唯一的超级pom中定义了默认版本,可以使用更新版本的Maven进行升级。请参阅当前主干:


maven antrun插件
1.3
maven汇编插件
2.2-β-5
maven依赖插件
2.8
maven发布插件
2.3.2
在Maven-3.1中,Maven依赖插件和Maven发布插件都已升级。以前的版本仍然使用2.1和2.0(顺序相同)

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


要查看有效的pom,请执行
mvn org.apache.maven.plugins:maven帮助plugin:2.2:effective pom
帮助:effective pom
,然后您(再次)依赖超级pom中的版本。

谢谢您的回答。问题是,运行help命令时会显示
Name:Maven依赖插件。。。版本:2.8
——但是在没有提到版本的情况下运行它,仍然会执行版本2.1——如果缺少,甚至会下载它。我还检查了pom文件。它根本不包含对这个插件的引用。所以我的问题还没有完全回答。也许你可以帮我弄清楚在哪里可以找到特定插件的最新版本元数据?特别是对于依赖插件也许这就是我所面临的问题?我假设所有2.7之前的版本都正确地标记为发行版。这足以触发“发布版本元数据”吗?@Tom Fink您的pom中有声明吗?在我的本地存储库中,
maven metadata nexus.xml
文件位于“.m2\repository\org\apache\maven\plugins\maven dependency plugin`目录中,包含最新版本信息(我们使用Nexus repository manager)。删除了答案的
帮助:描述
部分,因为这没有显示实际使用的插件版本。您解决了这个问题吗?出于同样的原因,非常有兴趣解决这个问题Hanks!我正在运行用户maven 3.0.5,但仍然存在这个问题。您知道我可以在哪里查看“我的”吗超级pom的副本?为了澄清误解,所以我错了Maven版本。我把它推到了2.5,Herve推到了2.8,看。所以是的,Maven 3.0.5仍然指向m-dependency-2。1@Ittai使用mvn帮助:有效pom
显示有效pom(~超级pom和项目pom的合并)看一看插件管理部分谢谢!你解决了一个长期存在的疑问:-)你能用更新的版本更新你的答案吗(甚至可能是FrVaBe关于有效pom的补充,以便它连接所有的循环)。Thx很多@Robert。谜团终于解开了。:)希望他们能很快删除这些配置,这样maven的表现会更“可预测”。
<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>