为什么Maven 3会放弃支持应用程序$ version声明?

时间:2010-05-13 12:53:50

标签: maven-2 versioning version maven maven-3

正如您从标题中看到的那样,我想问一下Maven 3中的情况不再支持pom.xml中的$ version。我们是否必须一次又一次地在每个pom.xml和相关配置文件中的每个项目中写一个常量?我们怎么能避免这样做?我们如何使用像$ version这样的版本控制方法?

3 个答案:

答案 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}