这是一个用来区分配置资源的描述文件,不参与配置项!
环境: 开发默认!开发默认!开发默认!(这一句不重要,但你可以将这篇文章写在你的资源目录用作标识,方便其他人查阅
)
在我们的项目中,有的时候会根据不同的环境需要修改不同的配置文件,最原始的做法就是在配置文件中一个一个注释掉不需要的配置,然后通过maven插件mvn install一下,在多次实践过程中,这样做其实效率并不高,也不好管理,容易导致一大堆的配置文件内容冗余,再接收项目的人更是一团乱麻,交接变得复杂。经过作者自己修改后,只需要选择即可完成一键打包的任务,这样大大的提高了开发效率,不用为打包改配置而头大。
实现自动化分不同环境打包,效果图:
一、配置教程:
1、 添加src/main/filters
目录,子目录结构如下:
----filters (资源根目录)
----dev (开发环境)
----pro (生产环境)
----pro1 (生产1环境)
----test (测试环境)
----testnw (测试内网环境)
----testww (测试外网环境)
资源目录结构如下图:
注意: 如果这里的文件名称与src/main/resources
文件夹有重名,打包时会默认将文件夹中的配置文件覆盖
到项目中
2、 pom.xml配置如下内容:
<project>
<!-- 打包多环境配置 -->
<profiles>
<profile>
<!-- 开发 -->
<id>dev</id><!-- 名称可以随意(建议id对应filters目录下相应文件夹名称) -->
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<!-- 对应filters目录下相应文件夹名称 -->
<env>dev</env>
</properties>
</profile>
<profile>
<!-- 测试 -->
<id>test</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<env>test</env>
</properties>
</profile>
<profile>
<!-- 测试-多版本-内网 -->
<id>testnw</id>
<activation>
<!-- 是否默认开启 -->
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<env>testnw</env>
</properties>
</profile>
<profile>
<!-- 测试-多版本-外网 -->
<id>testww</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<env>testww</env>
</properties>
</profile>
<profile>
<!-- 生产 -->
<id>pro</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<env>pro</env>
</properties>
</profile>
<profile>
<!-- 生产-多版本-1 -->
<id>pro1</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<env>pro1</env>
</properties>
</profile>
</profiles>
</project>
3、 在assembly.xml
中添加如下配置(非assembly插件打包请跳至第四步
,省略标签自动对应):
<assembly>
<fileSets>
<!-- 多环境配置 -->
<fileSet>
<!-- 读取配置多环境对应的配置文件 -->
<directory>src/main/filters/${env}/</directory>
<!-- 向conf目录输出 -->
<outputDirectory>conf</outputDirectory>
</fileSet>
</fileSets>
</assembly>
4、 普通打包在pom.xml
中添加(assembly插件打包请看第三步
,省略标签自动对应):
<build>
<resources>
<resource>
<!-- ${env}配置在:profiles → profile → properties → env 中,这里自动获取maven打包的命令参数 -->
<directory>${basedir}/src/main/filters/${env}</directory> <!-- 打包时包含src/main/filters/${env}目录下所有 "子" 文件 和 "孙" 文件,如dev、test、pro目录 -->
<!-- 这里请不要删除,可以排除掉不需要的文件,避免后来的人不懂 -->
<!-- <excludes>
<exclude>${env}/mapper/*</exclude> 打包时排除src/main/filters/${env}/mapper下所有 "子" 文件 和 "孙" 文件
<exclude>${env}/test/*</exclude> 打包时排除src/main/filters/${env}/test下所有 "子" 文件 和 "孙" 文件
<exclude>${env}/preview/*</exclude> 打包时排除src/main/filters/${env}/preview下所有 "子" 文件 和 "孙" 文件
<exclude>${env}/production/**</exclude> 打包时排除src/main/filters/${env}/production下所有 "子" 文件 和 "孙" 文件
注意点: 如果写一个心号*, 如<exclude>src/main/filters/${env}/*</exclude> 则表示:
打包时排除src/main/filters/${env}下所有 "子" 文件, 不排除 "孙" 文件, 如上一个截图所示。
以上配置优先度从上到下 递增, 这就达到目的: config目录下的配置各环境都需要, 而其它环境相关的配置只会有一个目录被打包-
</excludes> -->
</resource>
<resource>
<directory>src/main/resources/</directory> <!-- 打包时包含src/main/filters/${env}下所有 "子" 文件,environment变量值来自profile中赋值 -->
<targetPath></targetPath> <!-- 指定src/main/filters/${env}/所有"子文件" 打包 到包的哪个目录,空即为:根目录 -->
</resource>
</resources>
</build>
5、 maven打包命令:
1)、cmd命令窗口打包: cmd进入项目目录 → 输入命令:mvn clean -P dev install
2)、eclipse打包: 选中项目右键
→ Run As
→ Maven build
→ Goals输入:clean -P dev install
3)、注: 选这里 -P 后面的 dev代表pom.xml文件对应profile标签里的id内容
二、快捷打包设置:
1、Maven项目一键打包工具,build.bat文件内容(前提是运行bat文件的计算机已安装maven插件
):
cd /d %~dp0
@echo off
@title 【Maven项目一键打包工具】-【作者,百度搜索:seesun2012】
set str=欢迎使用【Maven项目一键打包工具】-【作者,百度搜索:seesun2012】
setlocal enabledelayedexpansion
set col=CAD9B
for /f "tokens=1-4" %%1 in ("%str%") do (echo.
for %%m in (%%1 %%2 %%3 %%4) do (set s=%%m
for /l %%a in (0,1,39) do (
call set b=0%%col:~!x!,1%%
set /a x+=1&if !x!==5 (set x=0)
set c=!s:~%%a,1!
set/p= <nul>!c!
findstr /a:!b! .* "!c!*"
del !c!
ping /n 1 /w 127.1>nul
)
echo.&echo.
)
)
@set JAVA_TOOL_OPTIONS=-Dfile.encoding=GBK
@echo 选择工程将要运行的环境,输入序号后按回车键结束:
@echo.
@echo #######################################################################
@echo ## 1. 开发环境-默认 ##
@echo ## 2. 测试环境-默认 ##
@echo ## 3. 测试环境-内网 ##
@echo ## 4. 测试环境-外网 ##
@echo ## 5. 生产环境-默认 ##
@echo ## 6. 生产环境-生产1 ##
@echo #######################################################################
@echo.
@set env=""
:input
@set /p input=请输入上面的序号开始打包:
@if %input%==1 (
@set env=dev
) else if %input%==2 (
@set env=test
) else if %input%==3 (
@set env=testnw
) else if %input%==4 (
@set env=testww
)else if %input%==5 (
@set env=pro
)else if %input%==6 (
@set env=pro1
) else (
@echo 非法的输入!请重试!
@echo.
goto input
)
:: 此处需要设置或修改MAVEN_OPTS,否则在执行mvn install命令时可能会出现OutOfMemoryError错误
:: 等号后面不能加引号
@set MAVEN_OPTS=-Xmx512m -XX:MaxPermSize=128m
@call mvn clean install -Dmaven.test.skip=true -P=%env% -Denv=%env% -e -U
@popd
@echo.
@if %ERRORLEVEL%==0 (
@echo 工程构建完毕!
) else (
@echo 工程构建失败!
)
@echo.
@echo 按任意键退出…… & pause>nul
注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!
持续更新中…
如有对思路不清晰或有更好的解决思路,欢迎与本人交流,QQ群:273557553,个人微信:
你遇到的问题是小编创作灵感的来源!