一、SpringBoot项目环境
- IntelliJ IDEA 2018.3.2
- Mysql 5.1
二、两种打包方式
- 使用Maven里的package一键打包
- 使用IDAE的Project Structure里的Artifacts打包
三、两种方式打包结果
- 使用Maven的package。这种打包方式会将打包后的jar放在target文件里,一个是没有后缀original文件,一个有后缀original的文件。将前者部署到服务器上。

使用这种方式打包后,部署到服务器上,可以使用以下命令运行主类
但是,无法使用以下命令运行指定的jar包中的其他主类java -jar *****.jar [参数1] [参数2] [参数3] #文中提到的参数都是我自己函数需要的参数,没有的话可以不填参数
以下是我的项目结构:java -cp *****.jar com.InsertDataToUserInfo(其他主类的具体包名) [参数1] [参数2] [参数3]

- 使用IDEA的Project Structure里的方式打包
左上角File------>Project Structure------->Artifacts--------> ➕ -------->JAR-------> From modules with dependencies

重点
选择MainClass------>路径填到src即可,白框的内容不要,即到xxxxx\src------->OK(会自动导入依赖)

点击工具栏上的Build------->Build Artifacts----->Build


用这种方式打包后的文件是生成的新目录,我的是out目录。
使用这种方式,可以使用以下命令运行,执行指定主类
但是,却无法使用以下命令执行默认主类java -cp *****.jar com.InsertDataToUserInfo [参数1] [参数2] [参数3]
开始我以为是在pom文件里配置了默认主类的原因,但是去掉了还是不行。java -jar *****.jar [参数1] [参数2] [参数3]
最后我就分别用两种方式打包了jar,一个拿来运行默认主类,一个拿来运行指定主类。
切记,在打包时,一定只能有一个标记为SpringBootApplication的类,不然会打包失败
本文详细介绍了在SpringBoot项目中,如何使用Maven的package命令和IntelliJ IDEA的Artifacts功能进行打包,并对比了两种方式的打包结果。Maven打包产生的jar可以直接运行主类,而IDEA Artifacts打包的jar可运行指定主类,但不能直接运行默认主类。在打包时需要注意只有一个@SpringBootApplication类。

1481

被折叠的 条评论
为什么被折叠?



