spring boot打包,依赖、配置文件分离,拷贝启动脚本
一、最终打包的目录结构
二、项目结构
三、开始
1、最终打包的目录,可根据自己需要修改。
<properties> <mzservice.path>${project.build.directory}/mzservice</mzservice.path> </properties>
2、配置清理插件,每次打包前,清理之前生成的打包目录。
<plugin> <artifactId>maven-clean-plugin</artifactId> <version>2.5</version> <executions> <execution> <id>auto-clean</id> <phase>initialize</phase> <goals> <goal>clean</goal> </goals> <configuration> <skip>false</skip> <filesets> <fileset> <directory>${mzservice.path}</directory> </fileset> </filesets> </configuration> </execution> </executions> </plugin>
3、打包自己的项目为jar并放入lib目录,不包含依赖。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <!--<finalName>myjar</finalName>--> <archive> <manifest> <addClasspath>true</addClasspath> <!--MANIFEST.MF 中 Class-Path 加入前缀--> <classpathPrefix>../lib/</classpathPrefix> <!--jar包不包含唯一版本标识--> <useUniqueVersions>false</useUniqueVersions> <mainClass>com.mz.mzservice.MzServiceApplication</mainClass> </manifest> <manifestEntries> <Class-Path>../config/</Class-Path> </manifestEntries> </archive> <!--不打包资源文件--> <excludes> <exclude>*/*.xml</exclude> <exclude>*/*/*.xml</exclude> </excludes> <outputDirectory>${mzservice.path}/lib/</outputDirectory> </configuration> </plugin>
4、将项目依赖的jar,复制到lib目录。
<!--拷贝依赖 copy-dependencies--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory> ${mzservice.path}/lib/ </outputDirectory> </configuration> </execution> </executions> </plugin>
5、将项目resources下的文件,复制到config下。将bin下的启动脚本复制到打包目录,可根据自己的需求修改。
<!--拷贝资源文件 copy-resources--> <plugin> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> <id>copy-resources</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <resources> <resource> <directory>src/main/resources</directory> </resource> </resources> <outputDirectory>${mzservice.path}/config</outputDirectory> </configuration> </execution> <!--copy 脚本,把bin目录下的文件复制到,打包目录下--> <execution> <id>copy-bin</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <resources> <resource> <directory>bin/</directory> </resource> </resources> <outputDirectory>${mzservice.path}</outputDirectory> </configuration> </execution> </executions> </plugin>
6、跳过测试
<!--maven打包时,跳过测试--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin>
7、其它说明
网上有些其它文章会使用spring-boot-maven-plugin 这个插件打包项目jar,个人觉得这个插件是对其它插件的一些封装,打包的jar会包含spring boot的一些东西,
测试之后觉得和
maven-jar-plugin打包的jar,使用上没什么区别。有对这方面研究较深的朋友,望不吝赐教。