16

我指的是“ Maven:完整参考”,尤其是有关配置文件的部分,该部分记录了此处<properties...标签中<profile...标签的使用:请参阅此处

 <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(例如)将如何以及在哪里读取各个属性?
4

1 回答 1

26

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

不,不会的。这将设置 maven 使用的属性。也就是说,mvn install -Denvironment.type=developmentmaven 将使用值 '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}
#...
于 2012-08-22T08:37:10.277 回答