我是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。
提前致谢。
拉杰什
答案 0 :(得分:2)
它位于一个Maven分发罐中,即$MAVEN_HOME/lib/maven-core-X.X.X.jar
。在META-INF/plexus/components.xml
文件中。这就是原因:
曾几何时(在Maven 2中)直到隐式指定,插件总是使用最新版本。这个决定基于两个假设:插件总是越来越好,所以你想得到最新的插件,因为插件罐不是你产品的一部分(甚至不是它的生产类路径) ),它有时会破坏它。
后来他们意识到这是一个非常糟糕的主意,因为它使你的构建不可重复。因此,通过将插件版本固定到Maven发布日期可用的插件的最新版本来修复它。
所以,最好的做法是创建一个带有pom.xml
部分的父<pluginManagement>
,并确定那里正在使用的所有插件的版本。