作用
- maven 打包多个环境,
- maven-war-plugin,修改web.xml
坑
SEVERE: ContainerBase.addChild: start:org.apache.catalina.LifecycleException: Failed to start error
坑1:
没有加入 includes, 打包插件过滤了webapp/WEB-INF/lib下,引用的本地jar,导致jar解压失败,项目启动就失败了。
解决方法:增加,指定需要过滤,动态修改的文件。或者用,排除掉不想让过滤的文件、目录等。
注: 如果webapp没有需要引用的本地jar,好像是没有问题的,用maven-war-plugin插件打包之后,只是jar无法解压了。
坑2:
编译版本,不然用的是1.5编译,报错。
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<build>
<defaultGoal>test</defaultGoal>
<finalName>newtranx</finalName>
<plugins>
<plugin>
<!--不用maven-compiler-plugin打包的原因-->
<!--用maven-war-plugin打包,才可以有webResources,才可以修改web.xml-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
<webResources>
<resource>
<directory>src/main/webapp</directory>
<!--必须要写includes,这是指定打包是需要修改的xml文件,不限于xml-->
<!--坑1:没有写的时候,打包后,本地引用的jar被打包工具修改了,解压失败,项目启动失败。-->
<includes>
<include>**/web.xml</include>
</includes>
<!--必须开启过滤,打包插件才会去修改文件,文件里用el表达式获取profile中的参数。-->
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<!--不同环境,不同的目录resources-dev,resources-pro等,打包之后,war包里面,文件名是resources-->
<resource>
<directory>src/main/resources-${pom.env}</directory>
<filtering>false</filtering>
</resource>
</resources>
</build>
<profiles>
<!--一个环境一个profile-->
<profile>
<id>local</id>
<properties>
<pom.env>dev</pom.env>
<!--以下参数,是为了web.xml获取-->
<cas.casServerLoginUrl>https://test.newtranx.com/cas/login?locale=zh</cas.casServerLoginUrl>
<cas.serverName>https://test.newtranx.com</cas.serverName>
<cas.casServerUrlPrefix>https://test.newtranx.com/cas</cas.casServerUrlPrefix>
</properties>
<activation>
<!--默认生效的配置组-->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>dev</id>
<properties>
<pom.env>dev</pom.env>
<cas.casServerLoginUrl>https://test.newtranx.com/cas/login?locale=zh</cas.casServerLoginUrl>
<cas.serverName>https://test.newtranx.com</cas.serverName>
<cas.casServerUrlPrefix>https://test.newtranx.com/cas</cas.casServerUrlPrefix>
</properties>
</profile>
<profile>
<id>pro</id>
<properties>
<pom.env>pro</pom.env>
<cas.casServerLoginUrl>https://plugin.newtranx.com/cas/login?locale=zh</cas.casServerLoginUrl>
<cas.serverName>https://plugin.newtranx.com</cas.serverName>
<cas.casServerUrlPrefix>https://plugin.newtranx.com/cas</cas.casServerUrlPrefix>
</properties>
</profile>
</profiles>
参考:
- maven-war-plugin官网: http://maven.apache.org/plugins/maven-war-plugin/index.html
- 李鑫博客:http://www.laysonx.com/essay/detail?id=110