原创

激活 Maven profile 的几种方式个人总结

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文件的内容随着打包的参数不同而变化,从而实现了我们多环境的配置自动打包功能,如果对本站感兴趣欢迎关注本站。

~阅读全文~人机检测~

关注下方微信公众号“Java精选”(w_z90110),回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。

Java精选专注程序员推送一些Java开发知识,包括基础知识、各大流行框架(Mybatis、Spring、Spring Boot等)、大数据技术(Storm、Hadoop、MapReduce、Spark等)、数据库(Mysql、Oracle、NoSQL等)、算法与数据结构、面试专题、面试技巧经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于网络上优质资源,希望对大家的学习和工作有所帮助。

评论

分享:

支付宝

微信