父POM.xml所在的位置

时间:2014-11-06 07:53:59

标签: java maven

我是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。

提前致谢。

拉​​杰什

1 个答案:

答案 0 :(得分:2)

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

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

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

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