使用maven打包不同部署环境的包总结:
概要
- 批处理文件实现自动打包
2.配置maven变量实现打不同部署环境的包(开发环境、测试环境、生产环境)
步骤
一、创建一个bat文件,输入以下内容:
@echo off
rem 打包环境:dev(开发环境)、test(测试环境)、prod(生产环境)
rem 不同环境包只需改该变量为相应值即可
set evn=test
rem profile id 如:<id>testId</id>,这个可以随便改一个名称
set project=testId
rem 日志文件
set log_file=%CD%\%evn%_build.log
rem 工程项目的路径,这里改成自己的工程路径
set work_home=D:\testProject
rem 生成war包所在路径,改成自己的路径
set packe_path=D:\packes\%evn%
echo %date% %time% ********开始执行自动打包**********
echo %date% %time% 日志文件 %log_file%
echo %date% %time% 工程目录 %work_home%
echo %date% %time% 生成包目录 %packe_path%
echo %date% %time% 执行中......
echo.
echo %date% %time% *******************开始执行自动打包***************************** > %log_file%
echo %date% %time% 打包日志路径 %log_file% >> %log_file%
echo %date% %time% 打包工程路径 %work_home% >> %log_file%
echo %date% %time% 生成包路径 %packe_path% >> %log_file%
echo.
echo %date% %time% 打包开始
pushd %work_home%\test
call mvn clean >> %log_file%
call mvn install >> %log_file%
call mvn package -P %project% -Devn=%evn% -Dfile=%packe_path% >> %log_file%
echo %date% %time% 打包结束
echo.
echo %date% %time% ************************自动打包执行结束******************** >> %log_file%
echo.
echo %date% %time% *********自动打包执行结束*********
rem 等待5秒 ping本机5次不使用默认的次数,nul是不显示ping信息:
@ping -n 5 127.1>nul
二、在项目下,对需要修改成不同环境的配置文件添加前缀为:dev_,test_,prod_ 的文件,如对jdbc在不同的部署环境修改不同的数据库连接。那么在jdbc配置文件的同目录下创建几个文件,把文件的数据库链接修改成对应的环境的数据库链接:
dev_jdbc.properties
test_jdbc.properties
prod_jdbc.properties
说明:前缀即bat文件里面指定的变量:evn=test
三、在项目的pom.xml文件 build前面添加如下信息:
<profiles>
<profile>
<!-- 这个的id跟bat文件里面的 project 变量对应,如 :testId -->
<id>testId</id>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>compile</phase>
<configuration>
<tasks>
<delete file="${project.build.directory}/classes/jdbc.properties" />
<move file="${project.build.directory}/classes/${evn}_jdbc.properties" tofile="${project.build.directory}/classes/jdbc.properties"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<execution>
<id>id.package</id>
<phase>package</phase>
<configuration>
<tasks>
<!-- 复制打包出来的war到指定的目录下,${file} 是传进来的变量。这里mallremote.war改成自己的项目war名称 -->
<copy file="target/test.war" todir="${file}" overwrite="true"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
到此,maven 通过变量打不同环境的包结束。
使用maven的心得后续慢慢总结。
尊重原创,转载请表明出处。