在Maven配置文件的profiles中使用properties标签

16

我查看了《Maven: The Complete Reference》的有关配置文件部分,特别是有关使用<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?

刚刚一直在尝试通过Maven和Spring来跟踪这个链,这正是我需要的问题和答案!太好了! - JonnyRaa
1个回答

26
这会创建一个 .properties 文件吗? 不会。这将设置 Maven 使用的属性。也就是说,使用 mvn install -Denvironment.type=development 命令时,Maven 将使用变量 'database.user' 的值 'development_user' (在 pom 和过滤资源中可以使用 ${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}
#...

1
在阅读了这个答案之后,我发现文档非常有帮助 - 看起来“过滤”基本上意味着Maven会在构建时遍历并替换任何文件中的${somename}为其值。您可以在构建输出中看到这一点。非常好的答案 - 真正填补了我的知识空白。 - JonnyRaa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接