gpt4 book ai didi

maven-3 - pom 中的 Maven 插件版本(貌似)被忽略

转载 作者:行者123 更新时间:2023-12-02 21:52:27 26 4
gpt4 key购买 nike

我注意到 Maven 输出报告的插件版本号与我在 pom 文件中指定的版本号不同。

例如,在我的pom中我指定编译器插件版本为3.1

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
</plugin>

但是当 Maven 运行(打包、安装...无论什么)时,它会输出它使用版本 2.3.2 作为编译器插件

[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile)

是否有一些全局 Maven 设置文件胜过本地 pom 文件配置?

最佳答案

更新

Plugin management是一种共享插件默认配置(来自父项目或同一项目)的机制,它会被 effective pom 中的值覆盖。 build plugins部分,所以这不是解决方案。

您的 pom 中可能有一个被激活的配置文件,它会覆盖插件版本值(请参阅下面的调试部分,阅读您的有效 pom)。注释掉( <!----> )pom 中的配置文件节点,并重新运行构建(如果有)。

如果这是原因,您可以 deactivate the profile in your 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

并在此处发布内容。

原始答案

Is there some global maven settings file that trumps local pom file configuration?

Yes, there is 。实际上至少有两个:maven 安装文件夹中的全局一个,以及本地存储库文件夹旁边的每用户一个。

当您针对项目运行 Maven 时,它会使用您的 pom 文件插入这两个文件,并计算生成的结果,该结果将在构建项目时应用。

调试

  • mvn -X clean compile > build.log - 使用 -X 运行带有详细输出的 Maven (调试)命令行标志。由于有大量输出,建议将其( > )通过管道传输到文件。当使用带有错误文档的插件时,这特别有用,因为您可以在执行之前查看所有插件属性及其实际值。
  • mvn <a href="http://maven.apache.org/plugins/maven-help-plugin/effective-pom-mojo.html" rel="noreferrer noopener nofollow">help:effective-pom</a> > pom.log计算构建项目时将应用的 pom。它还显示事件的配置文件。
  • mvn <a href="http://maven.apache.org/plugins/maven-help-plugin/effective-settings-mojo.html" rel="noreferrer noopener nofollow">help:effective-settings</a> > settings.log计算构建项目时将应用的设置

首先检查您的有效 pom,然后调试输出,最后检查有效设置。

环境

极少数情况下,问题可能出在环境中。您必须知道maven使用java,因此您需要这些来了解您的实际环境:

  • java -version
  • mvn -version

Maven 通过以下环境变量( see its install instructions )了解其环境:

  • M2_HOME - maven安装文件夹根目录的绝对路径
  • M2 - bin上面的文件夹,这就是 maven 可执行文件所在的位置
  • JAVA_HOME -JDK 安装文件夹根目录的绝对路径 - 通过更改此值,您可以更改 Maven 使用的 Java

当然,所有三个变量都必须在 PATH environment variable 中.

关于maven-3 - pom 中的 Maven 插件版本(貌似)被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18340970/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com