当前位置: 代码迷 >> 综合 >> Maven工程包含Spring Framework打成jar包的处理方式,使用maven-shade-plugin插件打包。包含所有的外部依赖jar包
  详细解决方案

Maven工程包含Spring Framework打成jar包的处理方式,使用maven-shade-plugin插件打包。包含所有的外部依赖jar包

热度:12   发布时间:2023-12-17 21:48:35.0

       配置完成后,执行mvn package即可打包。在target目录下会生成两个jar包,注意不是original-xxx.jar文件,而是另外一个。和maven-assembly-plugin一样,生成的jar文件包含了所有依赖,所以可以直接运行。

在pom.xml中配置:

<build>  <plugins>  <plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-shade-plugin</artifactId>  <version>2.4.1</version>  <executions>  <execution>  <phase>package</phase>  <goals>  <goal>shade</goal>  </goals>  <configuration>  <transformers>  <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">  <mainClass>com.demo.Main</mainClass>  </transformer>  </transformers>  </configuration>  </execution>  </executions>  </plugin>  </plugins>  
</build>

        如果项目中用到了Spring Framework,将依赖打到一个jar包中,运行时会出现读取XML schema文件出错。原因是Spring Framework的多个jar包中包含相同的文件spring.handlers和spring.schemas,如果生成一个jar包会互相覆盖。为了避免互相影响,可以使用AppendingTransformer来对文件内容追加合并:

在pom.xml中配置:

<build>  <plugins>  <plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-shade-plugin</artifactId>  <version>2.4.1</version>  <executions>  <execution>  <phase>package</phase>  <goals>  <goal>shade</goal>  </goals>  <configuration>  <transformers>  <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">  <mainClass>com.demo.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>  
</build>

打包执行方式(也可以用命令方式打包):

1、maven clean

2、maven update project

3、maven install

打完的jar包在target里面、运行方式在cmd命令框,找到jar包所在的位置,执行 java  -jar     xxxxxxx.jar 即可执行

  相关解决方案