在maven配置文件中使用properties标记

时间:2012-08-22 08:03:45

标签: maven properties maven-profiles

我参考了“ Maven:The Complete Reference ”,特别是有关在<properties...标记中使用<profile...标记的档案的部分: see here

 <profile>
            <id>development</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <property>
                    <name>environment.type</name>
                    <value>dev</value>
                </property>
            </activation>
            <properties>
                <database.driverClassName>com.mysql.jdbc.Driver</database.driverClassName>
                <database.url>
                    jdbc:mysql://localhost:3306/app_dev
                </database.url>
                <database.user>development_user</database.user>
                <database.password>development_password</database.password>
            </properties>
        </profile>

我不确定运行mvn install -Denvironment.type=dev命令时会发生什么:

  • 这会创建一个.properties文件吗?
  • 如果不是在开发人员测试应用程序时tomcat(例如)如何以及在何处阅读各个属性?

1 个答案:

答案 0 :(得分:22)

  

这会创建一个.properties文件吗?

不,它不会。这将设置maven使用的属性。这是,mvn install -Denvironment.type=development maven将使用值'development_user'作为变量'database.user'(您可以在poms和过滤资源中将其用作$ {database.user})。

  

如果不是在开发人员测试应用程序时tomcat(例如)如何以及在何处阅读各个属性?

问题是告诉maven根据配置文件(properties.files)过滤(和修改)您想要自定义的资源。

所以,首先你必须说maven来过滤资源:

<build>
    <resources>
        <resource>
             <directory>src/main/resources</directory>
             <filtering>true</filtering>
        </resource>
    </resources> 
</build>

然后修改属性文件以使用maven变量。例如,您的db属性文件如下所示:

database.driverClassName=${database.driverClassName}
database.url=${database.url}
#...