- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我注意到 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
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/
我正在使用 Maven 3.x,我的父 pom 和子 pom 中有以下结构。 父类 com.mygoogle.sample workorder 1.0-SNAPSHOT pom 1.0-SN
我已将各个项目中的所有存储库配置重构为一个父 pom,该父 pom 是为了对存储库和分发管理等内容进行单点配置的特定目的而创建的。据我了解,这应该是最佳实践。将我的父 pom 部署到 Nexus 服务
我尝试使用 mvn help:effective-pom 命令在示例应用程序上生成有效的 pom。 http://books.sonatype.com/mvnref-book/reference/po
在一个项目中,我们有一个名为时间戳的属性,它没有在父 POM 和子 POM 中定义,但仍然可以在 pom.xml 中访问。任何线索将不胜感激。 最佳答案 它可以由插件设置(如 https://www.
我在使用“uploadArchives”上传存档时收到“无法初始化 POM pom-default.xml:无法验证 POM”。我也尝试了 maven-publish 插件,但仍然没有成功。我们将不胜
我创建了一个程序,使用 HTML5 canvas 绘制一个 pom pom,参数大小、x、y、蓬松度和颜色。 pom pom 是通过从中心出来的画线创建的,参数蓬松度决定了从中心出来的股数。我有一个确
我正在关注maven的教程。我有一个非常简单的项目,里面有几个模块。在模块 pom 上,我想通过 ${parent.groupid} 和 ${parent.version} 引用主项目 pom 版本和
当我构建我的项目时,我收到以下警告: [INFO] ------------------------------------------------------------------------ [
我正在尝试构建一个 Maven 项目。我的其他团队成员能够毫无问题地构建它。我收到以下错误: [WARNING] The POM for org.hectorclient:hector-core:ja
我目前正在为 Maven 苦苦挣扎:我有一个由几个嵌套模块组成的复杂项目,对于其中一些模块,我在 POM 中有类似的配置。 我想让它干净。实际上,我想定义一个“runnable-jar”通用配置并在某
我正在将 maven Artifact 推送到 nexus,对于版本号小于子 POM 的父 POM 是否有任何影响? 最佳答案 据我所知没有。多模块项目中的模块版本可能以任何可能的方式有所不同。但是,
我在 Eclipse (Helios) 中有一个项目,带有 Maven pom.xml。我的项目是一个将使用 Hibernate、MySQL 的 Web 应用程序。 但是我在正确处理 pom.xml
repository我的 build.grade 部分已: mavenLocal() //maven { url { 'http://192.168.2
在多模块项目结构中 myApp |-moduleA |---pom.xml |-moduleB |---pom.xml |-pom.xml 如果我在 parent.pom 中有以下属性 4
我为 Maven 插件编写了代码,用于更新 pom 文件中的版本号。但是,当我尝试保存新的 pom 时,它被保存为有效的 pom。有没有办法将其保存为解析之前的样子?谢谢! private Maven
我有一个父 pom 在 pluginManagement 中定义了插件的一些配置项,其中有一个特定的配置。我不想在 child pom 中。 我尝试覆盖我的子 pom 中的其他配置项,这有效,但“删除
我不确定这是否受 Maven 支持。我很感激我能得到的任何帮助。 我有一个定义依赖项和排除项的父 pom。我无法更改父 pom: foo bar 1.0
当前场景: 父pom有一个distributionManagement部分,里面定义了两个repositories(releases和snapshots);引用如下: 父 pom:
似乎有几种方法可以在多项目构建中构建父 pom,我想知道是否有人对每种方式的优点/缺点有任何想法。 拥有父 pom 的最简单方法是将其放在项目的根目录中,即 myproject/ myprojec
我想在我的 Maven 项目中定义一个本地存储库。 我有一个 super pom 和几个子模块。我的文件结构是: /root /repository /child po
我是一名优秀的程序员,十分优秀!