SpringBoot官方提供的demo中,pom.xml文件里引用了官方提供的打包插件
<build>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</build>
通过这种方式打包出来的项目,所有文件都放在一个jar包中。这使得jar包非常臃肿,不利于服务器上部署。这时候就希望在maven打包的时候,把一些结构分离出jar包外。
例如一个项目的目录结构是这样的:,最终想打包变成这种结构。其中resources下的配置文件放在config目录下,所有的依赖包放在lib下,程序的启动jar就会变得很小。并且代码改变之后,只需要将打包出来的jar上传到服务器替换后再运行就可以了。
要自定义打包的结构,需要修改pom.xml文件中<build>标签里的内容
<build>
<finalName>FlightChangeService</finalName>
<resources>
<resource>
<!--指定mapping下的所有xml文件打包在jar中-->
<targetPath>${project.build.directory}/classes</targetPath>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>mapping/*.xml</include>
</includes>
</resource>
<resource>
<!--resources下一级的所有.xml .properties文件复制到config目录下-->
<targetPath>${project.build.directory}/config</targetPath>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**.xml</include>
<include>**.properties</include>
</includes>
</resource>
</resources>
<plugins>
<!--maven-dependency插件,将项目所有依赖包放到lib目录下-->
<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>
<type>jar</type>
<includeTypes>jar</includeTypes>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<classesDirectory>target/classes/</classesDirectory>
<archive>
<!--生成的jar中,不要包含pom.xml和pom.properties这两个文件-->
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<mainClass>com.loongair.Application</mainClass>
<!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
<useUniqueVersions>false</useUniqueVersions>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<!--jar中的MANIFEST.MF文件ClassPath需要添加config目录才能读取到配置文件-->
<Class-Path>config/ .</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
执行maven install之后target目录下就生成了我们自定义的包结构了