maven打war包


maven打包

1 . maven打jar包(Spring Framework)

1.1 插件使用

maven-resources-plugin(资源插件),maven-compiler-plugin(编译项目),maven-jar-plugin(将项目打成jar包),maven-assembly-plugin(将所有依赖打成jar包)。使用maven-assembly-plugin容易产生一个错误,就是在多个依赖冲突的时候无法解决。不过使用 maven-shade-plugin 生成一个 uber-jar,可以解决依赖间的冲突,适用于Spring Framework。

配置 maven-shade-plugin

<plugins>       <plugin>           <groupId>org.apache.maven.plugins</groupId>           <artifactId>maven-shade-plugin</artifactId>           <version>2.4.1</version>           <executions>               <execution>   				<!-- 将goal shade:shade 绑定到 phase package 上,绑定后执行mvn package即可 -->                 <phase>package</phase>                   <goals>                       <goal>shade</goal>                   </goals>                   <configuration>                       <transformers>                           <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">                               <mainClass>com.xxg.Main</mainClass>                           </transformer>                           <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">                              <resource>META-INF/spring.handlers</resource>                           </transformer>                           <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">                               <resource>META-INF/spring.schemas</resource>                           </transformer>                       </transformers>                   </configuration>               </execution>           </executions>       </plugin>   </plugins>

配置完成后,执行mvn package即可打包。生成的jar文件包含了所有依赖,所以可以直接运行。

<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">        <resource>META-INF/spring.handlers</resource>   </transformer>   <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">         <resource>META-INF/spring.schemas</resource>   </transformer>

这里的AppendingTransformer的作用是:在Spring Framework中会将多个依赖打到一个jar中,每个jar都会包含spring.handlers和spring.schemas文件,如果生成一个jar包文件会互相覆盖,运行时就会出现XML schema文件出错。为了避免互相影响,使用AppendingTransformer来对文件内容追加合并.

2 . maven打war包

2.1 插件使用

打war时需要maven-resources-plugin(资源插件),maven-compiler-plugin(编译项目),maven-war-plugin插件

maven-war-plugin配置

<plugin>      <artifactId>maven-war-plugin</artifactId>      <version>3.2.0</version>      <configuration>           <failOnMissingWebXml>false</failOnMissingWebXml>      </configuration> </plugin>

不想打进war包的jar的配置

<build> <filters>     <!-- 过滤文件,通常是一个属性文件(名值对的形式) -->     <filter>src/main/webapp/META-INF/auto-config.properties</filter> </filters> <finalName>communitytag</finalName> <plugins>     <plugin>         <groupId>org.apache.maven.plugins</groupId>         <artifactId>maven-war-plugin</artifactId>         <version>2.1-alpha-1</version>         <configuration> 			<!-- 不想打进war包的xxx.jar的配置 -->             <warSourceExcludes>*/lib/xxx.jar</warSourceExcludes>             <webResources>                 <resource>                     <!-- 元配置文件的目录,相对于pom.xml文件的路径 -->                     <directory>src/main/webapp/WEB-INF</directory>                     <!-- 是否过滤文件,也就是是否启动auto-config的功能 -->                     <filtering>true</filtering>                     <!-- 目标路径 -->                     <targetPath>WEB-INF</targetPath>                 </resource>             </webResources>         </configuration>     </plugin> </plugins> </build>

3 . idea中maven打war包(多种方式)

单个执行指令先clean->package
maven打war包

Build Artifacts
maven打war包