using maven variables defined in two separate profiles

496 views Asked by At

I have two profiles in my pom.xml, dev and stage:

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <hostname>vl-wlp1.hk.oracle.com</hostname>
        </properties>
        <id>stage</id>
        <properties>
            <hostname>vl-wcfs.hk.oracle.com</hostname>
        </properties>
    </profile>
</profiles>

And I'd like use these in my site documentation at:

src/site/apt/index.apt

like so:

Dev Site: ${dev.hostname}
Stage Site: ${stage.hostname}

Can I do that or something else that has the same effect?

1

There are 1 answers

2
Sean Patrick Floyd On BEST ANSWER

Not without a huge hack, no.

If you want to read both property values independently, they will have to be two different properties.

How about a pragmatic solution like this:

<properties>
    <dev.host>vl-wlp1.hk.oracle.com</dev.host>
    <stage.host>vl-wcfs.hk.oracle.com</stage.host>
</properties>

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <hostname>${dev.host}</hostname>
        </properties>
        <id>stage</id>
        <properties>
            <hostname>${stage.host}</hostname>
        </properties>
    </profile>
</profiles>

src/site/apt/index.apt:

Dev Site: ${dev.host}
Stage Site: ${stage.host}

(The huge hack mentioned above would mean programmatically iterating over the current project's profiles and parsing each profile's properties manually, you could do that in a custom maven plugin or in a Groovy Script using GMaven)