递归定义maven属性

rek*_*ide 5 maven-2

我们正在尝试重构我们的模块化 Maven 构建。我们引入了一个属性 DEPLOYMENT_ENV,它可能是“prod”、“dev”、“staging”或其他。我们进入的心态是我们可以定义:

dev.jdbc.username = yoyodyne
dev.jdbc.password = 0verthruster
staging.jdb.username = cavaliers
staging.jdbc.password = 8thdim
Run Code Online (Sandbox Code Playgroud)

这似乎崩溃的地方是提供 Maven 插件的配置。例如,DBUnit 需要一个用户名。从语义上讲,我们想到的解决方案如下所示,但是 Maven 不允许以这种方式进行递归属性定义:

<configuration>
    <username>${${DEPLOYMENT_ENV}.jdbc.username}</username>
</configuration>
Run Code Online (Sandbox Code Playgroud)

有什么关于参数化 Maven 构建的想法,这样我们就可以保留我们庞大的属性定义中央列表吗?

Eug*_*hov 1

您可以简单地使用相同的属性,而不是使用不同的属性名称,但在不同的配置文件中声明它们,无论是在 pom.xml 中还是在 settings.xml 中