Maven属性列表

时间:2016-09-16 08:42:02

标签: maven maven-profiles

尽管有标题,但我并不是在寻找与Maven一起使用的属性列表。

我希望设置一个包含项目列表的配置文件,在本例中是服务器列表。本地开发配置文件只有一个服务器,而测试时可能只有一个,两个或更多。

如何编写基本上“同一件事”的项目列表?

<profile>
    <id>DEV_COMMON</id>
    <properties>
        <kafka.config.retries>3</kafka.config.retries>
        <kafka.brokers> <!-- the following causes Maven error -->
            <server>
                <host>hostname1</host>
                <port>1234</port>
            </server>
            <server>
                <host>secondhostname</host>
                <port>5678</port>
            </server>
            <server>
                <host>hostnameNumber3</host>
                <port>9101</port>
            </server>
        </kafka.brokers>
    </properties>
</profile>

上面的配置文件会产生错误:

TEXT must be immediately followed by END_TAG and not START_TAG

非常感谢。 KA。

1 个答案:

答案 0 :(得分:1)

问题是Maven(AFAIK)中的属性不允许值的可重复性,因为每个属性只能通过名称访问:

${test.server}

...所以你将无法访问除第一个之外的其他属性。这就是为什么Maven甚至不允许properties节点内的子节点。

作为一个较小的邪恶,我会给这些属性一个独特的名称:

<properties>
    <kafka.broker.server1.host>hostname1</kafka.broker.server1.host>
    <kafka.broker.server1.port>1234</kafka.broker.server1.port>
    <kafka.broker.server2.host>hostname2</kafka.broker.server2.host>
    <kafka.broker.server2.port>1235</kafka.broker.server2.port>
</properties>