maven项目切换本地线上等环境

先注明:本人小码农一只,如有错误请见谅并指出,谢谢。

先贴下项目图
maven项目切换本地线上等环境_第1张图片

输出路径
maven项目切换本地线上等环境_第2张图片
设置webapp路径的原因是我需要修改其中的内容(这里遇到一个坑,花了2天时间才爬出来)
主要说下用到的2个插件

  1. maven-antrun-plugin
    这个插件的作用是可以在打包前修改文件,如删除、移动、重命名等,当然功能不止这些,我再项目中暂时只用到这。
<profiles>
        <profile>
        <id>patid>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.pluginsgroupId>
                    <artifactId>maven-antrun-pluginartifactId>
                    <version>1.8version>
                        <executions>
                            <execution>
                                <phase>compilephase>
                                <goals>
                                    <goal>rungoal>
                                goals>
                                <configuration>
                                        <tasks>
                                            <echo>Using pat file packagingecho>
                                            <delete file="${project.build.outputDirectory}/configuation.properties" />
                                            <move file="${project.build.outputDirectory}/configuation-pat.properties" tofile="${project.build.outputDirectory}/configuation.properties"/>
                                        tasks>
                                configuration>
                            execution>    
                        executions>
                    plugin>
                plugins>
            build>
        profile>
    profiles>

项目文件
maven项目切换本地线上等环境_第3张图片
运行图
maven项目切换本地线上等环境_第4张图片
结果
maven项目切换本地线上等环境_第5张图片
可以看到文件已经被删除和替换了(完整的应该还要贴项目中configuration-pat.properties内容和war包中configuration.properties内容是否一致,但是这样又得截两张图,我嫌麻烦就不弄了)
这段代码是配置pat环境,名字随意。
说下代码里几个地方:

  • compile
    这个指的的maven的生命周期,compile指的是编译,其他周期可以看下https://www.cnblogs.com/luotaoyeah/p/3819001.html这篇文章。

  • Using pat file packaging
    这个是输出一段话,在日志中能看到,这里是为了表示插件被执行了实际对打包没影响。


  • 删除文件

  • 移动文件,同时也可以用作重命名,复制是copy,具体还有那些命令可以上网搜下。
  • ${project.build.outputDirectory}
    这个路径是target/class

这个插件就说到这。

下面说下我打包时遇到另一个困扰的问题。
打包时webapp下的内容也分生产和开发,但是打war包是默认是将src/main/webapp下的内容复制到war包中,但是在项目deploy时webapp中的内容是没有发布到target中,这就导致没法修改。
解决方法

  1. 将webapp也配置输出路径(在上面的输出路径图片中能看到),这样就可以在上面pat的task中增加对webapp路径下的文件进行修改。具体代码为:
<delete file="${project.build.directory}/webapp/views/error.html" />
"${project.build.directory}/webapp/views/error-pat.html" tofile="${project.build.directory}/webapp/views/error.html"/>

这里的${project.build.directory} 路径为target/

2.配置war包中的wabapp复制路径
这里就要用到另一个插件:maven-war-plugin
代码:

<plugin>
    <groupId>org.apache.maven.pluginsgroupId>
    <artifactId>maven-war-pluginartifactId>
    <version>2.6version>
    <configuration>
        <warName>wbswarName>
        <webXml>${project.build.directory}/webapp/WEB-INF/web.xmlwebXml>
        <warSourceDirectory>target/webappwarSourceDirectory>
    configuration>
plugin>

其中最主要的是target/webapp这个就是指定webapp的路径

到这就打war时就可以自动实现pat文件的切换。

你可能感兴趣的:(java-maven)