【发布时间】:2013-08-07 05:31:37
【问题描述】:
我们的主要项目有一个 POM。我会说其中定义了 10 到 15 个配置文件。依赖项是通用的,大概有 20 个左右。
我们(至少)有一个依赖项,其版本取决于配置文件是针对测试还是生产。生产部署需要:
<version>1.0.3.RELEASE</version>
作为依赖版本,而 dev 和 staging 部署采用
<version>1.0.3.STAGING</version>
我想进行一些设置,这样我们就不必再手动切换了。一种明显的解决方案是在配置文件中定义依赖关系。问题在于我们拥有的配置文件数量。每次版本号增加时,我们都必须小心不要错过更新某个地方的版本。
我阅读了有关标记化的内容,并尝试像这样声明通用依赖项:
<dependency>
<groupId>org.groupId</groupId>
<artifactId>lib-artifactId</artifactId>
<version>1.0.3.${lib-artifactId.version}</version>
</dependency>
然后添加
<properties>
<lib-artifactId.version>RELEASE</lib-artifactId.version>
</properties>
到每个配置文件,在适当的地方将 RELEASE 更改为 STAGING。
这行不通。该错误的大意是它找不到具有版本的库
1.0.3.${lib-artifactId.version}
换句话说,它没有替换令牌。
我将如何解决这个问题?
【问题讨论】:
-
我已经在一个项目中使用了这个解决方案(配置文件+具有不同值的属性)并且效果很好。您确定配置文件已正确激活吗?
-
我很确定所有配置文件都按预期和预期工作。我考虑的一件事是,由于我的所有配置文件都在 pom.xml 中,maven 可能无法解析令牌,因为它被定义了很多次(每个配置文件一次)。