正如您从标题中看到的那样,我想问一下Maven 3中的情况不再支持pom.xml中的$ version。我们是否必须一次又一次地在每个pom.xml和相关配置文件中的每个项目中写一个常量?我们怎么能避免这样做?我们如何使用像$ version这样的版本控制方法?
答案 0 :(得分:15)
表达式${version}
已弃用,您应该使用${project.version}
,但两者仍然受支持,您当然不需要自定义属性。
以下内容对Maven 3来说效果很好:
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>services</artifactId>
<version>${project.version}</version>
<type>ejb</type>
</dependency>
还可以查看我以前对Warning on using project.parent.version as the version of a module in Maven 3的回答,您使用version
的方式(根据我在其他答案的评论中看到的内容)没有多大意义恕我直言而Maven 3实际上建议遵循最佳实践。只需继承版本。
答案 1 :(得分:1)
使用顶部<version/>
元素内的宏和<parent/>
元素中的版本从未在maven 2中工作过。它似乎可以工作,但只会导致下游混乱。如果那不是您所说的,请澄清您的问题。
答案 2 :(得分:0)
以下错误显示$(artifactId}
和${version}
[警告]不推荐使用表达式$ {artifactId}。请用 $ {project.artifactId}代替。 [警告]表达式$ {version}是 弃用。请改用$ {project.version}。 [警告] [警告]强烈建议解决这些问题,因为它们 威胁你的构建的稳定性。 [警告] [警告]为此 原因,未来的Maven版本可能不再支持buildin g这样的了 格式错误的项目。
警告信息说明了这一点。将${artifactId}
替换为${project.artifactId}
,将${version}
替换为${project.version}