Maven profile 从字面意思来理解的是外形,而在Maven的还是默认行为功能,还可以进行制定某些行为,使用maven管理项目有一个好处是可以针对不同的环境使用不同的编译打包设置,方便多环境下的打包部署,一般在开发项目都会有至少开发环境和正式环境两个,针对这两个环境的配置信息也会有所不同,比如数据库的配置等。我们可以使用maven的profile定义来进行区分,比如我们在项目的pom文件中定义如下片段:
<project> <modelVersion>4.0.0</modelVersion> <groupId>com.yoodb</groupId> <artifactId>myjar</artifactId> <version>0.1></version> <packaging>jar</packaging> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>*.*</include> </includes> <filtering>true</filtering> </resource> </resources> </build> <properties> <jdbc.url>jdbc:mysql://localhost:3306/yoodb1</jdbc.url> <jdbc.username>root1</jdbc.username> <jdbc.password>123456</jdbc.password> </properties> <profiles> <profile> <id>product</id> <properties> <jdbc.url>jdbc:mysql://localhost:3306/yoodb2</jdbc.url> <jdbc.username>root2</jdbc.username> <jdbc.password>567890</jdbc.password> </properties> </profile> </profiles> </project>
通过命令行参数激活,profile 比较多的时候,在命令行输入 -P 参数进行激活。在pom.xml文件中定义了数据库的相关配置,同时定义了一个profile,其id为product(产品含义就是代表生产环境),同时在这个profile中也定义了数据库的相关配置。这样我们使用mvn package命令时就可以使用默认的jdbc设置,当我们使用mvn package -P product时maven就会自动使用id为product的profile中的数据库配置,这个是maven读取属性配置文件的覆盖。然后再看pom.xml文件中的resources段的配置信息如下:
<resources> <resource> <directory>src/main/resources</directory> <includes> <include>*.*</include> </includes> <filtering>true></filtering> </resource> </resources>
注意其中最重要的是上述配置,此段配置的含义是过滤上面指定属性文件中的占位符,占位符是${变量名称}这样的形式,maven会自动读取配置文件,然后解析其中的占位符,使用上面pom.xml文件中定义的属性进行替换。我们可以在src/main/resources下定义一个jdbc.properties配置文件,内容如下:
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=${jdbc.url} jdbc.username=${jdbc.username} jdbc.password=${jdbc.password}
使用默认的配置信息,执行命令如下:
mvn clean package
使用product环境的配置信息,执行命令如下:
mvn clean package -P product
分两次执行上面的命令后,然后到项目的target目录下查看打包后的结果,可以看到jdbc.properties文件的内容随着打包的参数不同而变化,从而实现了我们多环境的配置自动打包功能,如果对本站感兴趣欢迎关注本站。