各种Maven打包

1、引言

目前遇到了Maven打包的问题,这玩意不用记,每次网上查一下就可以,但是网上的答案大都是模棱两可,要不就是细节不清楚,并且不同的Maven打包需求不一样,有时候需要打可运行jar包;有时候需要打Source jar包;有时候需要将公共模块抽取出来打成jar包,并不需要运行,提供给别人引用等等,查找实在浪费时间,所以就自己验证整理一份,方便后续查看。

2、利用Spring Boot Mavn插件打可运行jar

这种需求非常常见,因为有时候我们开发的项目是以jar的形式部署到服务器运行,IDEA中自带的Maven插件就支持打jar包,步骤如下:

1、在需要打包的模块的pom文件引入插件

注意:不引入这个插件会导致打成的jar包运行时报错:xxxx.jar中没有主清单属性。需要如下指定插件版本和<executions>标签

<build>
<!--指定jar包名称-->
<finalName>test</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

2、点击IDEA右侧的Maven工具执行打包即可,如下图,双击package

3、此时在Target目录下找到jar,放到服务器上java -jar xxxx.jar运行即可。

3、手动选择Main Class的方式打可运行jar包

Idea的File->Project Structure->Artifacets,如下图:

选择需要打包的模块,选择Main Class,其他的可以选择默认选项。

注意:这种方式适合多模块的打包,如果是整体打包,打出的jar包运行会有问题,错误提示和解决放入参考如下:https://ask.csdn.net/questions/7618126

本人并没有测试链接中的方法是否可行,而是直接重新创建了一个模块,将代码迁移后打包的,暂未找到更好的方法。

开始Build,步骤如下:

点击Build后,项目目录下会生成一个out目录,out目录里面就是打包好的jar,如下图:

取出对应的jar包放到服务器上运行即可。

4、打Source JAR包(jar里面是.java文件,不是编译后的.class文件)

要打包的module的pom文件下引入如下插件:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<!--插件版本自行指定-->
<version>2.4</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

 重新引入后刷新Maven插件,可以看到多了一个source插件,如下图:

双击install,可以将打成的普通jar和source jar发布到本地的Maven仓库,如下图:

上面的瘦jar包没有下载依赖的jar包,只有pom依赖,可以给其他工程从外部引入。

5、引入外部lib包后打可运行jar包

有时候开发时会用到第三方提供的jar包,不是通过Maven引入进来,属于系统级jar包,需要指定jar的本地访问路径,此时的引入和打包方式和一般项目不同。

5.1、引入方式

首先需要在项目的第二级创建lib文件夹,将第三方jar包引入其中,如图:

 然后在需要引入当前jar的模块pom文件中依赖,groupId和artifactId以及版本都是自定义,主要是指定<scope>为system,并指定java的本地路径,代码如下:

<dependencies>
<dependency>
<groupId>xxx.xxx</groupId>
<artifactId>xxxx</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/../lib/xxxx-1.0-SNAPSHOT.jar</systemPath>
</dependency>
</dependencies>

5.2、打包方式

打包和其他的Spring Boot Maven插件打包一样,双击Package即可,但是需要注意在模块pom文件中增加如下配置:

<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>

完成的打包插件代码如下:

<build>
<!--指定jar包名称-->
<finalName>test</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<!--打包时包含外部jar包-->
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

 

posted @   浪迹天涯的派大星  阅读(255)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示