一、背景
现在我们大部分的项目都是基于maven来进行构建的,比如现在主流的Spring boot项目,全程都是基于maven进行搭建,那么我们在对maven项目开发完成之后,准备上线需要对项目进行打包的时候,有时候经常遇到主函数找不到?或者是开发环境的和测试环境的配置文件还在包里面没有去除。那么我们这里主要介绍Spring boot项目如何打包合理化的问题。
二、关于主函数找不到
打包完成之后你会发现主函数找不到,https://blog.csdn.net/miwanmeng/article/details/80401118,这是我前面写的解决方案,这个解决方案是没有问题,但是相对来说不够方便,下面我们可以对pom.xml文件进行增加配置。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.0.0.RELEASE</version>
<configuration>
<mainClass>com.trs.DemoApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
这里我们可以看到我们需要配置的是mainClass这个标签,只要这个地址是对的,那么打包的时候就会成功。
三、项目打包时过滤开发环境和测试环境的配置文件。
这里我们还是需要在pom.xml下面进行打包配置,下面可以参考我的配置方案,具体项目需要具体分析,这里没有通用的方案,所以我下面的代码是提供参考。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<excludes>
<exclude>application-dev.properties</exclude>
<exclude>application-test.properties</exclude>
</excludes>
</configuration>
</plugin>
需要注意的是这个配置也是放啊 build->plugins->标签下面。exclude里面是可以写通配符的需要提醒,当然这是去掉的方案,也可以选择配置只留下的方案,和这个配置相反。
四、扩展Spring boot特殊打包
关于Spring boot打包我们可以打包成jar包或者war包大家都知道了,这里我想补充的是打包成jar包的时候,但是我代码想给别的项目做个依赖包的时候该怎么打包呢,这里官方也有提供方案的,我这里也给出一个示例:
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>lib</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>lib</classifier>
<excludes>
<exclude>application*.*</exclude>
<exclude>static/**</exclude>
<exclude>templates/**</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
exclude标签内一样是写需要去掉的不需要打包的内容,配置这个只会,你打包的时候回出现两个jar包。