更新
插件管理是一种共享插件默认配置(来自父项目或同一个项目)的机制,它会被有效pom build plugins
部分中的值覆盖,因此这不是解决方案。
可能是您的 pom 中有一个配置文件被激活并且它覆盖了插件版本值(请参阅下面的调试,阅读您的有效 pom)。注释掉 ( <!--
, -->
) 你的 pom 中的配置文件节点,如果是,则重新运行构建。
如果这是原因,您可以在您的 pom 中停用配置文件,或者在从命令行运行时仅附加-P !<PROFILE_NAME>
或-P \!<PROFILE_NAME>
用于 linux。
更具体地说,如果您的 pom 看起来像这样:
<project>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>someGroupId</groupId>
<artifactId>someArtifactId</artifactId>
<version>versionFromPluginManagement</version>
...
</pluginManagement>
<plugins>
<plugin>
<groupId>someGroupId</groupId>
<artifactId>someArtifactId</artifactId>
<version>versionFromPlugins</version>
...
</build>
<profiles>
<profile>
<activation>
<activeByDefault>BOOLEAN_STRING</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>someGroupId</groupId>
<artifactId>someArtifactId</artifactId>
<version>versionFromProfile</version>
...
</project>
工件someGroupId:someArtifactId
在pluginManagement
、plugins
和profiles
部分中定义。版本解析如下:
- 如果
versionFromPlugins
未定义且 BOOLEAN_STRING 为,false
则结果版本为versionFromPluginManagement
- 如果
versionFromPlugins
已定义且 BOOLEAN_STRING 为,false
则结果版本为versionFromPlugins
- 如果 BOOLEAN_STRING 是,
true
那么结果版本是versionFromProfile
如果不是这样,请运行:
mvn help:effective-pom > pom.log
mvn help:effective-settings > settings.log
mvn -version > environment.log
并在此处发布内容。
原始答案
是否有一些全局 Maven 设置文件胜过本地 pom 文件配置?
是的,有。实际上至少有两个:maven 安装文件夹中的全局一个,本地存储库文件夹旁边的每个用户。
当您对您的项目运行 maven 时,它会使用您的 pom 文件插入这两个文件,并计算生成项目时将应用的结果。
调试
mvn -X clean compile > build.log
- 运行带有-X
(调试)命令行标志的详细输出的 maven。由于有很多输出,建议将其 ( >
) 通过管道传输到文件中。这在使用带有错误文档的插件时特别有用,因为您可以在执行之前查看所有插件属性及其实际值。
mvn help:effective-pom > pom.log
计算构建项目时将应用的 pom。它还显示活动配置文件。
mvn help:effective-settings > settings.log
计算将在构建项目时应用的设置
首先检查您的有效 pom,然后调试输出,最后检查有效设置。
环境
很少,问题可能出在环境中。您必须知道 maven 使用 java,因此您需要这些来了解您的实际环境:
java -version
mvn -version
Maven 通过以下环境变量了解其环境(请参阅其安装说明):
M2_HOME
- maven 安装文件夹根目录的绝对路径
M2
-bin
上面的文件夹,这是 maven 可执行文件所在的位置
JAVA_HOME
- JDK 安装文件夹根目录的绝对路径 - 通过更改此值,您可以更改 Maven 使用的 Java
当然,所有三个变量都必须在PATH 环境变量中。