为什么要配置、依赖文件分离:
1.在传统jar包中,所有文件都打包到一个jar包中,jar非常臃肿,在进行服务更新部署时非常不便,而且传输不稳定时导致传输失败。如果过实行文件分离、在依赖不改变的情况下,仅仅上传更新后的 编译文件是非常xxxxxxxxxxxxxxxxxxxxxxxxxxxx方便的。
- 如果要修改一些配置文件:properties、xml,静态文件等可以直接在服务器上编辑。
那么怎么实行配置、依赖文件分离呢?
插件介绍
- maven-jar-plugin 这个插件式专门用来打包用的,可以配置需要打包进去的文件,程序的入口类等。
- maven-resources-plugin 这个插件是用来拷贝资源文件的。
- maven-maven-dependency-plugin 这个插件是用来拷贝依赖库的。
- maven-assembly-plugin 可以说包含了以上插件的功能,但是可以做到更精细的控制。
- spring-boot-maven-plugin 这个不用说,springboot 项目最重要的插件,整个项目的打包处理过程还是要依附于它。
打包成可执行jar,不仅仅局限SpringBoot项目(主入口函数存在)
maven-jar-plugin 插件打包jar
在pom文件中配置,但是这样 依赖的jar并不会打进来(后面会有解决方法),适用不需要依赖文件的项目。
-
org.apache.maven.plugins -
maven-jar-plugin -
2.3 -
-
-
-
-
-
-
-
true -
-
-
xxx.xxx.Main -
-
-
-
-
${project.build.directory} -
-
-
maven-assembly-plugin 插件打包jar
- <plugin>
- <artifactId>maven-assembly-pluginartifactId> <configuration> <appendAssemblyId>falseappendAssemblyId> <descriptorRefs> <descriptorRef>jar-with-dependenciesdescriptorRef> descriptorRefs> <archive> <manifest> <mainClass>xxx.xxx.MainmainClass> manifest> archive> configuration> <executions> <execution> <id>make-assemblyid> <phase>packagephase> <goals> <goal>assemblygoal> goals> execution> executions> plugin>
打包SpringBoot 项目
方案一、
- <plugins>
- <plugin> <groupId>org.apache.maven.pluginsgroupId> <artifactId>maven-jar-pluginartifactId> <configuration> <archive> <manifest> <addClasspath>trueaddClasspath> <classpathPrefix>lib/classpathPrefix> <useUniqueVersions>falseuseUniqueVersions> <mainClass>xxx.xxx.ApplicationmainClass> manifest> <manifestEntries> <Class-Path>/resourcesClass-Path> manifestEntries> archive> <outputDirectory>${project.build.directory}/disoutputDirectory> configuration> plugin> <plugin> <groupId>org.apache.maven.pluginsgroupId> <artifactId>maven-dependency-pluginartifactId> <executions> <execution> <id>copy-dependenciesid> <phase>packagephase> <goals> <goal>copy-dependenciesgoal> goals> <configuration> <outputDirectory> ${project.build.directory}/dis/lib/ outputDirectory> configuration> execution> executions> plugin> <plugin> <artifactId>maven-resources-pluginartifactId> <executions> <execution> <id>copy-resourcesid> <phase>packagephase> <goals>
