【发布时间】:2011-02-19 02:11:10
【问题描述】:
从标题中可以看出,我想问一下Maven3 的情况,pom.xml 中不再支持$version。难道我们真的要在每一个pom.xml和相关配置文件的每一个项目中,一次又一次地写一个常量吗?我们怎样才能避免这样做呢?我们如何使用像 $version 这样的版本控制方法?
【问题讨论】:
标签: maven-2 versioning version maven maven-3
从标题中可以看出,我想问一下Maven3 的情况,pom.xml 中不再支持$version。难道我们真的要在每一个pom.xml和相关配置文件的每一个项目中,一次又一次地写一个常量吗?我们怎样才能避免这样做呢?我们如何使用像 $version 这样的版本控制方法?
【问题讨论】:
标签: maven-2 versioning version maven maven-3
下面的错误显示了$(artifactId}和${version}的弃用
[警告] 表达式 ${artifactId} 已弃用。请用 ${project.artifactId} 代替。 [警告] 表达式 ${version} 是 已弃用。请改用 ${project.version}。 [警告] [警告] 强烈建议修复这些问题,因为它们 威胁到构建的稳定性。 [警告] [警告] 为此 原因,未来的 Maven 版本可能不再支持构建这样的 格式错误的项目。
警告信息说明了这一点。将${artifactId} 替换为${project.artifactId},将${version} 替换为${project.version}
【讨论】:
表达式${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 的方式(基于我在另一个答案中的cmets 中看到的)实际上并没有多大意义恕我直言和Maven 3好心建议遵循最佳实践。只需继承版本即可。
【讨论】:
在顶部 <version/> 元素中使用宏和 <parent/> 元素中的版本在 maven 2 中从未工作过。它似乎工作,但除了下游的混乱之外什么也没有。如果你说的不是这个,请澄清你的问题。
【讨论】: