根据一个属性

时间:2017-09-02 11:11:26

标签: maven maven-3 pom.xml

我在这个Java JNLP项目中使用了一个pom.xml,我们有三个配置文件(dev,pre,pro),除此之外,还有这两个模式用于运行应用程序。一个是这样的:

<properties>
    <!-- When this is set to webservice, we need no more properties -->
    <service.mode.package>webservice</service.mode.package>
</properties>

当service.mode.package更改其值时,我们更改为:

<properties>
    <!-- When this is set to localservice, we need the properties following this line -->
    <service.mode.package>localservice</service.mode.package>

    <!-- DESIRED PROPERTIES FOR LOCALSERVICE -->
    <jdbcDriver.propName>someName</jdbcDriver.propName>
    <jdbcDriver.groupId>com.some.url</jdbcDriver.groupId> 
    <jdbcDriver.version>6.9</jdbcDriver.version>

    <dataSource.id>${project.artifactId}-ds</dataSource.id> 
    <dataSource.simpleJndiName>jdbc/${dataSource.id}</dataSource.simpleJndiName>
    <dataSource.user>userName</dataSource.user> 
    <dataSource.password>someW31rdPassw0rd</dataSource.password> 

    <testDataSource.password>${dataSource.password}</testDataSource.password> 
    <testDataSource.user>${dataSource.user}</testDataSource.user>
</properties>

现在,每当我们更改service.mode.package值时,我们都会评论并取消注释这一系列属性,所以我的问题是,如果Maven 3.2.1可以定义一组属性取决于一个特定财产的价值。

这应该可以在一个地方更改它,因为任何配置文件都可以更改其service.mode.package值。最好的方法是在一个配置文件中更改此值,而不必担心所有属性,具体取决于它。

编辑:我已经读过,我可以同时激活两个配置文件,并且在现有配置文件之后尝试此操作:

    <profile>
        <id>localservice</id>
        <activation>
            <property>
                <name>service.mode.package</name>
                <value>localservice</value>
            </property>
        </activation>
        <properties>
            <!-- DESIRED PROPERTIES FOR LOCALSERVICE -->
            <jdbcDriver.propName>someName</jdbcDriver.propName>
            <jdbcDriver.groupId>com.some.url</jdbcDriver.groupId> 
            <jdbcDriver.version>6.9</jdbcDriver.version>

            <dataSource.id>${project.artifactId}-ds</dataSource.id> 
            <dataSource.simpleJndiName>jdbc/${dataSource.id}</dataSource.simpleJndiName>
            <dataSource.user>userName</dataSource.user> 
            <dataSource.password>someW31rdPassw0rd</dataSource.password> 

            <testDataSource.password>${dataSource.password}</testDataSource.password> 
            <testDataSource.user>${dataSource.user}</testDataSource.user>
        </properties>
    </profile>

它似乎只有在我放入标签时激活!webservice并且它始终激活。这是如何运作的?它是否比较字符串值?

如果有人知道该做什么或在哪里可以找到解决方案,我将不胜感激。提前致谢

0 个答案:

没有答案