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>
标签:插件,各种,jar,如下,Maven,引入,打包 From: https://www.cnblogs.com/zhaodalei/p/16895450.html