【问题标题】:Where Does Parent POM.xml residesParent POM.xml 位于何处
【发布时间】:2015-05-15 00:12:32
【问题描述】:

我是 Maven 新手,如果这是一个非常基本的问题,请原谅我。

我正在开发一个使用 maven 的项目,当我为我的项目传递站点命令时出现错误。

[ERROR] Failed to execute goal
    org.apache.maven.plugins:maven-site-plugin:3.1:site (default-site) 
    on project mobileads: Execution default-site of goal
    org.apache.maven.plugins:maven-site-plugin:3.1:site
    failed: A required class was missing while executing
    org.apache.maven.plugins:maven-site-plugin:3.1:site:
    org/sonatype/aether/graph/DependencyFilter

我知道maven-site-plugin:3.1版本有问题。

如果我明确包含最新版本的 maven-site-plugin(3.4),这个问题就会消失。但我的问题是它在哪里拾取 maven-site-plugin:3.1,就像我的项目的 pom.xml 一样,我看不到这个插件所以它表明它正在从某个地方选择一些默认设置。

我想知道该文件的名称和该文件所在的位置,以便我可以查看所有设置。我使用 MAC。

提前致谢。

拉杰什

【问题讨论】:

标签: java maven


【解决方案1】:

它位于一个 Maven 分发 jar 中,即在 $MAVEN_HOME/lib/maven-core-X.X.X.jar 中。在META-INF/plexus/components.xml 文件中。原因如下:

曾几何时(在 Maven 2 中)直到隐式指定,插件总是使用最新版本。这个决定基于两个假设:插件总是越来越好,所以你想得到最新的,而且,因为插件 jar 不是你的产品的一部分(甚至不是它的生产类路径),它没关系有时打破。

后来他们意识到这是一个非常糟糕的主意,因为它会使您的构建无法重现。因此,通过将插件版本确定为 Maven 发布日期可用的最新插件版本来修复它。

因此,好的做法是创建一个父 pom.xml<pluginManagement> 部分,并确定在那里使用的所有插件的版本。

【讨论】:

  • 感谢JBaruch 的回复....所以你的意思是如果在我的项目pom.xml 中找不到它需要的所有插件,maven 会引用这个文件?所以这意味着如果我使用最新的 Maven(我使用的是 Maven 3.2.3),这些插件只会由 Maven 团队负责。还有一件事我想知道我如何查看这个特定文件,因为它是 jar 文件的一部分
猜你喜欢
  • 2016-09-30
  • 2016-09-28
  • 2014-08-06
  • 2020-06-09
  • 2019-03-02
  • 2015-10-27
  • 2012-08-03
  • 2014-08-10
  • 2023-03-05
相关资源
最近更新 更多