springboot三种打包⽅式
springboot应⽤打包的两种⽅式
⼀.纯⼿⼯⽅式
1).在⼯程的根⽬录打开cmd命令⾏
2).执⾏maven clean install命令,打成jar包,此处有坑(不会打依赖包进去)
3).需要使⽤maven clean package dependency:copy-dependencies使命,把相关依赖包输出
3).命令执⾏完成后,会在target/⽬录下⽣成xxx.jar包和⼀个dependency⽬录(依赖包所在⽬录)(具体记不清楚了)
4).⼀个地⽅新建⼀个⽂件夹(随意),我这是c:/test/,在test⽬录下再新建⼀个⽂件夹lib
5).把⽣成的依赖包和打好的xxx.jar包都扔到c:/test/lib/中
6).在c:/test/⽬录中执⾏java -dirs=App(主启动类)命令后,springboot程序就可以启动了
纯⼿⼯⽅式填坑:
1)).不建议使⽤此种⽅式来执⾏程序,由于-dirs参数是收ext class loader来加载的,⼀般的java程序是使⽤app class loader来加载代码的
2)).由于我的代码⽤了HS256加密算法,⽤这种⽅式就报了HS256加密⽅式不可⽤的异常
3)).可能还存在其他的坑,暂时没遇到
⼆.使⽤maven打包插件:appassembler⽅式
此各⽅式在打包过后,批处理、⽇志⽬录、配置⽂件相关、等会⾃动⽣成,不需要⼿动写启动脚本
1.在<plugins>标签内加⼊以下配置
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.2.0.RELEASE</version>
</plugin>
<plugin>
<groupId&jo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.10</version>
<configuration>
<!-- ⽣成linux, windows两种平台的执⾏脚本 -->
<platforms>
<platform>windows</platform>
<platform>unix</platform>
</platforms>
<!-- 打包后的根⽬录 -->
<assembleDirectory>${project.build.directory}/product</assembleDirectory>
<!-- 打包的jar,以及maven依赖的jar放到这个⽬录⾥⾯ -->
<repositoryName>lib</repositoryName>
<!-- 可执⾏脚本的⽬录 -->
<binFolder>bin</binFolder>
<!-- 配置⽂件的⽬标⽬录 -->
<configurationDirectory>conf</configurationDirectory>
<!-- 拷贝配置⽂件到上⾯的⽬录中 -->
<copyConfigurationDirectory>true</copyConfigurationDirectory>
maven打包本地jar包<!-- 从哪⾥拷贝配置⽂件 (默认src/main/config) -->
<copyConfigurationDirectory>updown/src/main/resources</copyConfigurationDirectory>
<!-- lib⽬录中jar的存放规则,默认是${groupId}/${artifactId}的⽬录格式,flat表⽰直接把jar放到lib⽬录 -->
<repositoryLayout>flat</repositoryLayout>
<encoding>UTF-8</encoding>
<logsDirectory>logs</logsDirectory>
<tempDirectory>tmp</tempDirectory>
<programs>
<program>
<id>udApp</id>
<!-- 启动类 -->
<mainClass>com.bjrun.UpDownMain</mainClass>
<jvmSettings>
<extraArguments>
<extraArgument>-server</extraArgument>
<extraArgument>-Xmx1G</extraArgument>
<extraArgument>-Xms1G</extraArgument>
</extraArguments>
</jvmSettings>
</program>
</programs>
</configuration>
</plugin>
2.在项⽬根⽬录打开cmd命令
3.执⾏mvn clean package appassembler:assemble命令打包程序
4.3步命令执⾏完成后,会在target⽬录下输出程序的相关项
5.进到target/product⽬录下,双击xxx.bat批处理⽂件,即可运⾏springboot程序
此⽅式填坑
1).打开批处理⽂件时,⼀闪⽽过,Logs⽬录也没有输出,遇到这种情况,需要先打开cmd命令窗⼝,进到批处理所在⽬录,执⾏批处理⽂件,可以看到报错信息
2).由于项⽬依赖包过多,所以在运⾏时出现了“输⼊⾏太长,命令语法不正确”的错误,修改插件⽣成的批处理⽂件,如下
三.所有相关依赖打到⼀个jar包中去
昨天是死活把依赖包打不进⼀个jar包中去,今天⼜试了⼀下,竟然成功了
需要在l中添加以下配置
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.2.0.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
直接在idea中maven package,就可以了
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论