`
ihyperwin
  • 浏览: 425646 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用maven为不同环境的工程打包

阅读更多
pom.xml里加入下面内容:


<build>
		<pluginManagement>
		   <plugins>
			 <plugin>               
			     <groupId>org.apache.maven.plugins</groupId>   
			     <artifactId>maven-resources-plugin</artifactId>     
	                     <version>2.5</version>            
			     <configuration>          
		                <useDefaultDelimiters>false</useDefaultDelimiters>    
		                   <delimiters>    
					<delimiter>$[*]</delimiter>    
			          </delimiters>         
			         <encoding>UTF-8</encoding>              
			      </configuration>          
			 </plugin> 
                  </plugins>
		</pluginManagement>
		<resources>
			<resource>
				<directory>${basedir}/src/main/resources</directory>
				<filtering>true</filtering>
			</resource>
		</resources>
		<testResources>
			<testResource>
				<directory>${basedir}/src/test/resources</directory>
			</testResource>
		</testResources>
</build>



maven-resources-plugin,官网介绍地址http://maven.apache.org/plugins/maven-resources-plugin/,从2.3版本开始引入过滤机制。
http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html 这个网址具体介绍Filtering功能。
其中本例子中useDefaultDelimiters设置为false,不使用默认配置。当然也可以使用,默认的如下:(详情请看这个网址:http://maven.apache.org/plugins/maven-resources-plugin/resources-mojo.html)
Set of delimiters for expressions to filter within the resources.
These delimiters are specified in the form 'beginToken*endToken'. If no '*' is given, the delimiter is assumed to be the same for start and end.
So, the default filtering delimiters might be specified as:

<delimiters>
  <delimiter>${*}</delimiter>
  <delimiter>@</delimiter>
</delimiters>

Since the '@' delimiter is the same on both ends, we don't need to specify '@*@' (though we can).




设置prorfiles,四个profile,默认激活dev。

<profiles>
		<profile>
			<id>dev</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<build>
				<filters>
					<filter>../${project.parent.artifactId}/vars/vars.dev.properties</filter>
				</filters>
			</build>
		</profile>
		<profile>
			<id>sit</id>
			<build>
				<filters>
					<filter>../${project.parent.artifactId}/vars/vars.sit.properties</filter>
				</filters>
			</build>
		</profile>
		<profile>
			<id>pre</id>
			<build>
				<filters>
					<filter>../${project.parent.artifactId}/vars/vars.pre.properties</filter>
				</filters>
			</build>
		</profile>
		<profile>
			<id>prod</id>
			<build>
			   <filters>
			       	<filter>../${project.parent.artifactId}/vars/vars.prod.properties</filter>
				</filters>
			</build>
		</profile>
</profiles>


文件目录如图:





var.dev.properties文件为过滤文件,为普通的Property文件,里面是一些key、value值。下面是个demo

envName=dev
hostName=192.168.0.1
port=80
url=http://www.test.com

如项目中还有其他的一些配置文件,可以把变量的赋值放在var.dev.properties等文件中。比如项目中还有其他的xml文件和properties文件,只需在这些文件中作如下引用。

demo.properties

hostName=$[hostName]
testUrl=$[url]
env=$[envName]

这样即可通过$[]占位符(在上面通过pom文件配置)引用到var.dev.properties等过滤文件的内容。xml中引用过滤文件的属性,亦是如此。

最后就是通过maven打包了,激活对应的profile。如下:

dev打包命令:  mvn clean install -Pdev  或  clean install (默认是dev)
sit打包命令:  mvn clean install -Psit
pre打包命令:  mvn clean install -Ppre
prod打包命令: mvn clean install -Pprod








  • 大小: 2.7 KB
分享到:
评论

相关推荐

    maven 过滤文件夹打包

    工程运行环境有研发,测试和生产,不同的运行环境配置不同,maven 打包时指定文件目录,使用指定的文件夹下的配置文件。

    maven 占位符打包

    工程运行环境有研发,测试和生产,不同的运行环境配置不同,使用maven 占位符,不同环境使用不同的配置

    maven window下安装包

    第13章:使用Maven生成项目原型/13.2 编写自己的项目原型/13.2.6 按照项目原型生成Maven工程 第14章:灵活的构建/14.1 Maven的属性/14.1.1 概念 第14章:灵活的构建/14.1 Maven的属性/14.1.2 属性分类/14.1.2.1 内置...

    assembly项目打包插件,包含windows与linux环境下的启动脚本

    maven项目、springboot项目使用assembly插件打包,实现项目可配置化、生成系统日志、jar文件与项目分离,并生成windows与linux环境下启动、停止等操作的脚本文件。

    Maven 3.6.1安装包,在 Windows 系统上使用该资源来快速搭建和管理 Maven 环境

    无论是初学者还是有经验的开发者,都可以使用该资源来快速搭建和管理 Maven 环境。 使用场景和目标: 通过安装 Maven 3.6.1,您可以在 Windows 系统上实现以下目标和应用场景: 管理项目依赖:使用 Maven 可以轻松...

    Maven2 的新特性.7z

    在使用Maven2执行compile之后,这个目录中的所有文件及子目录,会复制到target/classes目录中,为以后的打包提供了方便。 • src/test/resources,负责管理项目测试的资源。在使用Maven2执行test-compile之后,这个...

    azure-maven-plugins:适用于Azure的Maven插件

    如果找不到凭据,Azure Maven插件将使用Maven插件为Azure帐户提供的第三种方法(例如OAuth或DeviceLogin)自动登录。 AuthType(自Web App 1.9.0起) 您可以指定在Maven配置中使用哪种身份验证方法,默认值为auto...

    maven的pom.xml说明详解

    -工程组号- -通用前置接口号- -版本号- -打包文件前置.xml- -全局属性配置- -NJCC开发环境(MySQL)- -部署环境(对应配置文件版本)- -设置默认环境- -NJCC开发环境(Oracle)- -部署环境(对应配置文件版本)- -配置...

    Maven构建Dubbo服务可执行jar包

    通过maven搭建dubbo环境,包括生产者和消费者以及公共模块,配置模块等,Dubbo视频教程--基础篇--第07节--使用Maven构建Dubbo服务的可执行jar包.pdf,maven和dubbo..zip源码工程

    springmvc+mybatis+mysql+log4j.xml+logjdbc+maven+nexus+dubbo

    sql完整输出,excel报表导出,外加线程号 方便查询从请求到响应所有日志可以根据线程号一次性获得,主要为了方便查询日志,项目骨架也支持扩展,maven打包是自动替换配置文件,可以在不同的测试环境,生产环境,准...

    java开源交易所系统.zip

    本系统使用JAVA进行开发,基于spring-cloud进行系统搭建,使用maven进行构建工程。 环境准备 JDK1.8 mysql数据库,用于存储业务信息 redis数据库,用于处理用户登录会话信息 mongodb数据库,用于存储币币K线数据 安装...

    docker-compose部署springboot工程

    安装maven环境,通过docker命令打包镜像,然后编写docker-compose编排文件,部署springboot工程

    api-master:api-master是springMVC项目,基于maven多模块和dubbo的rpc方式整合使用

    项目基于maven的多profile环境配置,打包时需要选择(test/pro/dev)打包运行的环境。 **项目特点** - 友好的代码结构及注释,便于阅读及二次开发 。 - 前端页面采用jsp+freemaker,多视图解析处理,优先jsp。 - 采用...

    MavenHelloWorld

    1)Maven统一工程管理 2)Maven统一管理多环境配置文件 3)Maven统一打包

    add_to_app_demo::two_hearts: 一个Flutter demo,源码依赖,AAR资源依赖切换选择

    同时可以解决开发人员环境不一致问题打包接入CI/CD,简化流程开发和打包时最好无需改动Flutter工程参考了一些例子,使用fat-aar的方式,将flutter工程中android项目从application改为library,需要

    Nacos2.2版本数据库适配插件.zip

    在Nacos2.2的发布包环境下,下载当前插件项目源码,打包为jar包,将该文件放到nacos主目录下的plugins文件夹中,默认会使用Nacos的loader.path机制指定该插件的路径,打包插件可选择nacos-postgresql-datasource-...

    ClassFinal字节码加密工具-其他

    支持maven插件,添加插件后在打包过程中自动加密。支持加密WEB-INF/lib或BOOT-INF/lib下的依赖jar包。环境依赖:JDK 1.8 +本工具使用AES算法加密class文件,密码是保证不被破解的关键,请保存好密码,请勿泄漏。密码...

    基于vue前台、java后台、mysql实现的档案管理系统源码+部署说明.zip

    本系统后台为基于java开发的ssm项目,使用java脚手架springboot,项目管理工具maven。在项目目录下运行maven build指令,指令执行完毕后会在项目目录下的target目录下生成后台项目的jar包,将该jar包上传至服务器/...

    Java中国论坛开源.zip

    编码为utf-8,导入 javachina.sql导入maven工程或者使用 war:war 命令打包一个war包启动tomcat,访问 http://127.0.0.1:8080/java-china配置 [blade.properties]blade.dev:是否是开发者模式(生产环境建议关闭)...

    基于SSH+Redis+MySQL的IM即时聊天系统设计与实现

    Maven工程, IDE:IDEA MySQL: 5.7 Redis: 5.0.4 如果需要使用离线推送服务,需要在个推开通推送服务,然后更新配置文件中与个推相关的配置信息 打包部署与运行 执行mvn clean package,在target目录中将生成im-...

Global site tag (gtag.js) - Google Analytics