maven之---资源过滤 在java/main/resourse/*.xml ,*.properties引用maven属性${db.username}

本文主要来源maven实战14.3

为了应对环境的变化,首先使用Maven属性将这个会发生变化的部分提取出来.在上一节的数据库配置中,连接数据库使用的驱动类,URL,用户名和密码都可能发生变化,因此使用Maven属性取代他们:

database.jdbc.driverClass=${db.driver}
database.jdbc.connectionURL=${db.url}
database.jdbc.username=${db.username}
database.jdbc.password=${db.password}

z放到src/main/resources/*.properites

既然使用了Maven属性,就应该在某个地方定义他们.用一个额外的profile将maven属性包裹其中,代码如下


<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <db.driver>com.mysql.jdbc.Driver</db.driver>
            <db.url>jdbc:mysql://192.168.1.100:3306/test</db.url>
            <db.username>dev</db.username>
            <db.passeord>dev-pwd</db.password>
        </properties>
    </profile>
</profiles>

  代码中的Maven属性定义与直接在POM的properties元素下定义并无二致,这里只是使用了一个id为dev的profile,其目的是将开发环境下的配置与其他环境区别开来.关于profile,本章将详细解释

  有了属性定义,配置文件中也使用了这些属性,一切就OK了吗>还不行.要留意的是Maven属性默认只有在POM中才会被解析,也就是说,${db.username}放到POM中会变成test,但是如果放到src/main/resources/目录下的文件中,构建的时候他讲仍然还是${db.usrname}.因此,需要让Maven解析资源文件(resources目录)中的Maven属性.

  资源文件的处理其实是maven-resources-plugin做的事情,它的默认行为只是将项主资源文件复制到主代码编译输出目录中,不过只要通过一些简单的POM配置,该插件就能够解析资源文件中的Maven属性,即开启资源过滤,只要在此基础上添加乙方filtering配置即可,代码如下:


<resources>
    <resource>
        <directory>${project.basedir}/sr/main/resources<directory>
        <filtering>true</filtering>
    </resource>
<resources>

  目前一切就绪,在POM的profile中定义了这些属性的值,并且为资源目录开启了属性过滤.最后,只要在命令行激活profile,Maven就能在构建项目的时候使用profile中属性值替换数据库配置文件中的属性引用.命令如下

mvn clean install -Pdev

  

posted @ 2020-12-16 10:39  张艳涛&java  阅读(251)  评论(0编辑  收藏  举报