一、打包方式介绍
idea实际上只有一种打包方式,但是springboot自带打包插件。所以对于springboot的项目有两种打包方式,一种是idea自带打包方式,另一种springboot插件打包方式。在我们的项目中,推荐使用springboot的打包方式。
两种打包也有不少差异,主要体现在两个方面。一是打包操作不一样。另一种是组包的结构目录不一样。下面介绍一下idea自带打包和springboot打包具体操作。
二、idea自带打包(不推荐!坑很多!!!若是普通maven工程,请使用五中的方法进行打包)
1、打开Idea的file->Project Structure,进入项目配置页面,如下图
2、点击Artifacts,进入Artifacts配置页面,点击 + ,选择如下图的选项。
3、进入Create JAR from Modules页面,按照如下图配置。
4、删除打成包的依赖jar包
5、创建jar包,回到IDEA,点击Build->Build Artifacts,选择build。
6、jar包在out目录下
坑:当jar包根目录下的文件过多时,jar包在运行时可能会报找不到主类!!!
解决办法:将依赖的jar包放进文件夹中(减少根目录下的文件数),完美解决!!!
三、springboot打包(推荐,只适用于springboot项目)
说明:如果要用springboot打包方式,在pom文件中不要加任务其他打包插件。只要留springboot打包插件,如下面,其他打包插件统统不要,如果加上其他打包插件会导致打的包不能正常使用,因为打包机制不一样,打出来的包不伦不类。第四节介绍两种打包后包的组织结构。
1、点击Help->FindAction
2、查找maven->点击MavenProject
3、点击package
4、找到jar包所在位置
四、两种打包目录结构介绍
1、 idea自带打包jar包目录结构。结构目录较多,但是一定有META-INF目录。
2、 springboot打包jar包目录结构。springboot打出的包永远只有这三个层级目录。
五、普通maven打包
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<!-- get all project dependencies -->
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<!-- MainClass in mainfest make a executable jar -->
<archive>
<manifest>
<addClasspath>true</addClasspath>
//主函数入口
<mainClass>service.ba.exchange.receiver.DataReceiver</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!-- bind to the packaging phase -->
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>