使用maven profile实现多环境可移植构建

在开发过程中,我们的软件会面对不同的执行环境。比方开发环境、測试环境、生产环境,而我们的软件在不同的环境中。有的配置可能会不一样。比方数据源配置、日志文件配置、以及一些软件执行过程中的基本配置,那每次我们将软件部署到不同的环境时,都须要改动对应的配置文件。这样来回改动,是个很麻烦的事情。有没有一种方法可以让我们不用改动配置就能公布到不同的环境中呢?当然有。这就是接下来要做的事。

当然,这里的前提是使用maven做为构建工具。

使用maven来实现多环境的构建可移植性。须要借助maven提供的profile功能。通过不同的环境激活不同的profile来达到构建的可移植性。

一、配置profile

首先是profile配置。在pom.xml中加入例如以下profile的配置:

<profiles>
	<profile>
		<!-- 本地开发环境 -->
		<id>development</id>
		<properties>
			<profiles.active>development</profiles.active>
			<deploy.url>http://host:port/manager/text</deploy.url>
		</properties>
		<activation>
			<activeByDefault>true</activeByDefault>
		</activation>
	</profile>
	<profile>
		<!-- 測试环境 -->
		<id>test</id>
		<properties>
			<profiles.active>test</profiles.active>
			<deploy.url>http://host:port/manager/text</deploy.url>
		</properties>
	</profile>
	<profile>
		<!-- 生产环境 -->
		<id>production</id>
		<properties>
			<profiles.active>production</profiles.active>
			<deploy.url>http://host:port/manager/text</deploy.url>
		</properties>
	</profile>
</profiles>

这里定义了三个环境,各自是development(开发环境)、test(測试环境)、production(生产环境),当中开发环境是默认激活的(activeByDefault为true),这样假设在不指定profile时默认是开发环境。

同一时候每一个profile还定义了两个属性。当中profiles.active表示被激活的profile的名称,deploy.url表示公布服务器的地址。我们须要在以下使用到这两个属性。

另外host和port各自是公布服务器的主机地址和端口号。

?

二、配置文件

针对不同的环境,我们定义不同的配置文件。而这些配置文件都做为资源文件放到mavenproject的resources文件夹下。即src/main/resources文件夹下。且各个环境的配置分别放到对应的文件夹下,而全部环境都公用的配置。直接放到src/main/resources文件夹下就可以。例如以下图所看到的:

如图所看到的,开发环境、測试环境、生产环境的配置文件分别放到src/main/resources文件夹下的development、test、production三个子文件夹中,而全部环境都公用的配置文件spring-applicationContext.xml直接放到src/main/resources文件夹下。当中jdbc.properties配置数据源、logback.xml配置日志。

?

三、maven资源插件配置

在pom中的build节点下。配置资源文件的位置。例如以下所看到的:

	<build>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<!-- 资源根文件夹排除各环境的配置。使用单独的资源文件夹来指定 -->
				<excludes>
					<exclude>test/*</exclude>
					<exclude>production/*</exclude>
					<exclude>development/*</exclude>
				</excludes>
			</resource>
			<resource>
				<directory>src/main/resources/${profiles.active}</directory>
			</resource>
		</resources>
	</build>

首先第一个资源文件位置src/main/resources须要排队提各个环境的配置文件,各个环境的配置我们在第二个<resource>节点中通过前面在profile中配置的profiles.active属性来指定。即src/main/resources/${profiles.active}。

这样在激活指定的profile时。会载入指定文件夹下的配置文件。如当前激活的是production profile,那么这个资源文件夹就是src/main/resources/production。这样就达到了不同环境载入不同配置的目的。

?

四、配置tomcat-maven-plugin插件

<plugin>
	<groupId>org.codehaus.mojo</groupId>
	<artifactId>tomcat-maven-plugin</artifactId>
	<version>1.2-SNAPSHOT</version>
	<configuration>
		<url>${deploy.url}</url>
		<server>tomcat</server>
		<path>/appcontext</path>
	</configuration>
</plugin>

当中公布的<url>节点就是在前面profile中配置的deploy.url属性,这样不同的环境就指定了不同的公布地址。<server>和<path>节点各自是公布服务器的用户配置的id以及应用的context名称。

?

五、构建或公布

全部须要的配置就完毕了,以下是见证奇迹的时候了。通过在执行maven命令时指定不同的profile就可以构建不同环境须要的war包或公布到不同的环境了 。如:

mvn clean package -Pproduction即构建出生产环境须要的war包

mvn tomcat:redeploy -Ptest 即公布到測试环境

?

因为默认的profile是development,所以假设我们不指定profile。那么载入就是开发环境deployment下的配置文件了。

即我们在本地开发測试时,不用关心profile的问题。

并且本地开发时在eclipse中使用tomcat插件来进行热部署时也不须要额外的配置。真正的做到了依据不同环境来自己主动切换,就可以移植的构建。

另外,在进行持续集成时,使用hudson集成maven相同是很很方便的。

原文地址:https://www.cnblogs.com/ldxsuanfa/p/10630751.html

时间: 2024-10-10 22:25:42

使用maven profile实现多环境可移植构建的相关文章

【转】maven profile实现多环境打包

作为一名程序员,在开发的过程中,经常需要面对不同的运行环境(开发环境.测试环境.生产环境.内网环境.外网环境等等),在不同的环境中,相关的配置一般不一样,比如数据源配置.日志文件配置.以及一些软件运行过程中的基本配置.每次在不同环境部署程序时,都需要修改相应的配置文件,使之完成环境的配置.这么做存在一个比较大的问题:每次修改配置非常麻烦,而且配置错误会产生不可预估的影响,比如,在发布生产环境时用的开发环境的配置还好,但如果在开发环境下用生产环境的数据,将会造成生产数据的污染,导致生产环境崩溃.

maven profile实现多环境打包

快速解决: 项目目录 1.pom文件中添加profile <profiles> <profile> <!-- 本地开发环境 --> <id>dev</id> <properties> <profiles.active>dev</profiles.active> </properties> <activation> <activeByDefault>true</activ

maven profile实现多环境配置

每次项目部署上线都需要手动去修改配置文件(比如数据库配置,或者一个自定义的配置)然后才能打包,很麻烦,网上找到 maven profile可以完成这个工作,记录如下: 环境:eclipse + spring mvc + maven 1.直接看图,把数据库的配置单独拿出来放在了resources_env目录下,三个不同环境参数不同, 2,在pom文件中添加配置    这个引用自:http://www.cnblogs.com/raphael5200/p/6677549.html,感谢 <profil

使用maven profile实现多环境配置相关打包

项目开发需要有多个环境,一般为开发,测试,预发,正式4个环境,通过maven可以实现按不同环境进行打包部署,命令为: mvn package -P dev 在eclipse中可以右击选项run configuration,输入上述命令. PS:eclipse maven install和maven packege的区别在于前者除了打包到target外,还会install到本地仓库,这样其他引用的工程就可直接使用. 其中"dev"为环境的变量id, 可以自己定义, 我定义的名称为:dev

项目实现不同环境不同配置文件-maven profile

最近接触的项目都是在很多地方都落地的项目,需要支持不同的环境使用不同的配置文件.一直以来都以为是人工的去写不同的配置文件,手动的去修改运用的配置文件.感觉自己还是太low呀.maven的使用的还停留在基础上.后面看项目才发现maven可以不同环境不同的发布,只需要制定环境参数或者设置就可以,整个工程简单粗暴.觉的非常不错,于是想深入的了解一下.写下此文. 一.maven profile介绍 profile可以让我们定义一系列的配置信息,然后指定其在相应的环境下使用相应的配置文件.这样我们就可以根

Maven 利用 profile 进行多环境配置

我们在进行项目的多环境配置时,有很多种方式供我们选择,比如 SpringBoot 自带的 application-dev.yml.maven 的 profile 等.这里介绍的就是如何利用 profile 进行多环境配置. 首先,在 pom.xml 中添加你需要的 profile 配置: <profiles> <!-- 开发环境 默认激活--> <profile> <id>dev</id> <properties> <env&g

jenkins+gitlab+maven+tomcat持续集成环境安装配置

jenkins+gitlab+maven+tomcat,该环境主要实现自动构建部署java web应用. 其工作流程是:提交代码到gitlab--jenkins触发构建任务--maven编译打包--jenkins将war包部署到tomcat. 安装JDK #安装jdk1.8 tar zxvf jdk-8u77-linux-x64.gz #设置环境变量 #vi /etc/profile export JAVA_HOME=/usr/local/jdk1.8.0_77 export JAVA_BIN=

maven profile动态选择配置文件

一.背景 在开发过程中,我们的软件会面对不同的运行环境,比如开发环境.测试环境.生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置.日志文件配置.以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件,这样来回修改,很容易出错,而且浪费劳动力. maven提供了一种方便的解决这种问题的方案,就是profile功能. 二.profile简介 profile可以让我们定义一系列的配置信息,然后指定其激活条件.这样我们就可以定义多个pro

maven profile

使用 Maven Profile 和 Filtering 打各种环境的包 每个项目都会有多套运行环境(开发,测试,正式等等),不同的环境配置也不尽相同(如jdbc.url),借助Jenkins和自动部署提供的便利,我们可以把不同环境的配置文件单独抽离出来,打完包后用对应环境的配置文件替换打包后的文件,其实maven已经给我们提供了替换方案:profile + filtering Filtering Filtering 是 maven 的 resource 插件 提供的功能,作用是用环境变量.po