gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:53:55 27 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:someArtifactIdpluginManagement 中定义, 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/

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