先注明:本人小码农一只,如有错误请见谅并指出,谢谢。
先贴下项目图
输出路径
设置webapp路径的原因是我需要修改其中的内容(这里遇到一个坑,花了2天时间才爬出来)
主要说下用到的2个插件
- maven-antrun-plugin
这个插件的作用是可以在打包前修改文件,如删除、移动、重命名等,当然功能不止这些,我再项目中暂时只用到这。
<profiles>
<profile>
<id>pat</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>Using pat file packaging</echo>
<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>
项目文件
运行图
结果
可以看到文件已经被删除和替换了(完整的应该还要贴项目中configuration-pat.properties内容和war包中configuration.properties内容是否一致,但是这样又得截两张图,我嫌麻烦就不弄了)
这段代码是配置pat环境,名字随意。
说下代码里几个地方:
<phase>compile</phase>
这个指的的maven的生命周期,compile指的是编译,其他周期可以看下https://www.cnblogs.com/luotaoyeah/p/3819001.html这篇文章。<echo>Using pat file packaging</echo>
这个是输出一段话,在日志中能看到,这里是为了表示插件被执行了实际对打包没影响。<delete>
删除文件<move>
移动文件,同时也可以用作重命名,复制是copy,具体还有那些命令可以上网搜下。${project.build.outputDirectory}
这个路径是target/class
这个插件就说到这。
下面说下我打包时遇到另一个困扰的问题。
打包时webapp下的内容也分生产和开发,但是打war包是默认是将src/main/webapp下的内容复制到war包中,但是在项目deploy时webapp中的内容是没有发布到target中,这就导致没法修改。
解决方法
- 将webapp也配置输出路径(在上面的输出路径图片中能看到),这样就可以在上面pat的task中增加对webapp路径下的文件进行修改。具体代码为:
<delete file="${project.build.directory}/webapp/views/error.html" />
<move file="${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.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warName>wbs</warName>
<webXml>${project.build.directory}/webapp/WEB-INF/web.xml</webXml>
<warSourceDirectory>target/webapp</warSourceDirectory>
</configuration>
</plugin>
其中最主要的是<warSourceDirectory>target/webapp</warSourceDirectory>
这个就是指定webapp的路径
到这就打war时就可以自动实现pat文件的切换。