Maven 对不同的部署环境打包

时间:2023-01-17 09:59:38

使用maven打包不同部署环境的包总结:

概要

  1. 批处理文件实现自动打包
    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的心得后续慢慢总结。

尊重原创,转载请表明出处。