Maven如何设置java中可见的属性

时间:2014-02-27 21:12:07

标签: java spring maven

这是我在pom.xml中的个人资料:

<!-- Production Profile -->
    <profile>
        <id>production</id>
        <activation>
            <property>
                <name>profile</name>
                <value>prod</value>
            </property>
        </activation>
        <properties>
            <build.profile.id>prod</build.profile.id>
        </properties>

    </profile>

    <!-- Development Profile -->
    <profile>
        <id>development</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <build.profile.id>dev</build.profile.id>
        </properties>
    </profile>

    <!-- Integration Test Profile -->
    <!-- Use mvn -Dprofile=test -->
    <profile>
        <id>integration-test</id>
        <activation>
            <property>
                <name>profile</name>
                <value>test</value>
            </property>
        </activation>
        <properties>
            <!-- Used to locate the profile specific configuration file -->
            <build.profile.id>test</build.profile.id>
            <!-- Only integration tests are run. -->
            <skip.integration.tests>false</skip.integration.tests>
            <skip.unit.tests>true</skip.unit.tests>
        </properties>
    </profile>

接下来在我的春天上下文配置文件中我得到了:

@PropertySource("classpath:properties/app-${profile:dev}.properties")

因此,技巧允许我使用不同的配置运行我的项目。我还有3个配置属性文件,在该文件中有:

spring.profiles.active=integration-test
spring.profiles.active=prod
spring.profiles.active=dev

这种配置工作完美。活动配置文件会按照我的预期更改,例如,当我运行mvn clean install -Dprofile=test时,我正在使用app-test.properties文件而我的有效个人资料为integration-test

但这个技巧有一个问题。当有人运行mvn install -Pintegration-test时,活动配置文件是dev not integration-test。因此可以运行mvn install -Pintegration-test然后将属性配置文件设置为test ??

2 个答案:

答案 0 :(得分:2)

您不应该在每个环境中使用Maven配置文件。使用Maven,您可以构建jar / war / ear。不同的环境不应该导致另一个工件。因此,您应该将配置拉出此工件。 How to pass value to maven pom.xml at rum time from java file?描述了如何解决这个问题的很多选择。

答案 1 :(得分:0)

请尝试-P+integration-test选项