maven分别打包开发、生产配置文件

项目工程针对开发和生产有两套配置,
开发配置文件目录:
src/main/resources/
    applicationContext.xml (开发和生产共用)
    dubbo.properties (开发和生产不同)


生产配置文件目录:
src/main/profile/product/
    dubbo.properties

maven中profile配置如下:(其中 basedir 是 maven 的内置变量,是工程根目录的绝对路径)

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <profile.dir>${basedir}/src/main/resources</profile.dir>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>product</id>
        <properties>
            <profile.dir>${basedir}/src/main/profile/product</profile.dir>
        </properties>
    </profile>
</profiles>

<project>的<build>配置如下:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
       <!-- 使用excludes标签可以排除文件 -->
</resource> <resource> <directory>${profile.dir}</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <filtering>true</filtering> </resource> </resources> </build>

本来,maven在copy资源文件时,不会覆盖已存在的文件,但是加上<filtering>后,会覆盖文件哦,同时该命令会打开文件。

<profile>内部也可以添加<build>标签,执行顺序是先profile/build,后project/build。

project/build属于公共配置,而profile/build属于profile私有配置。

原文地址:https://www.cnblogs.com/allenwas3/p/7654503.html