maven打war包

时间:2024-11-17 07:08:50

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></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="">  
                            <mainClass></mainClass>  
                        </transformer>  
                        <transformer implementation=""> 
                            <resource>META-INF/</resource>  
                        </transformer>  
                        <transformer implementation="">  
                            <resource>META-INF/</resource>  
                        </transformer>  
                    </transformers>  
                </configuration>  
            </execution>  
        </executions>  
    </plugin>  
</plugins>  

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

<transformer implementation=""> 
      <resource>META-INF/</resource>  
</transformer>  
<transformer implementation="">  
      <resource>META-INF/</resource>  
</transformer> 

这里的AppendingTransformer的作用是:在Spring Framework中会将多个依赖打到一个jar中,每个jar都会包含和文件,如果生成一个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/</filter>
</filters>
<finalName>communitytag</finalName>
<plugins>
    <plugin>
        <groupId></groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1-alpha-1</version>
        <configuration>
			<!-- 不想打进war包的的配置 -->
            <warSourceExcludes>*/lib/</warSourceExcludes>
            <webResources>
                <resource>
                    <!-- 元配置文件的目录,相对于文件的路径 -->
                    <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
在这里插入图片描述

Build Artifacts
在这里插入图片描述