SpringBoot打包分离jar部署

首先提出一个问题,咱们为何要把jar包分离出来?java

缘由很简单咱们用spring-boot-maven-plugin插件打包后的jar文件一般生成的jar比较大,少则几十M,若是上传云服务器外网传输会比较慢,为啥打包后文件会很大呢,这是由于里面包含了咱们项目依赖的众多jar,那么咱们就能够大胆的想能不能把jar分离出来,由于项目在发布的时候每每修改的是配置文件和java文件,对于依赖jar不多修改,因此就冒出一个想法,每次只发布变动的class和配置文件部分,能不能把jar剥离出来,开心的是maven确实提供了这种方式打包。使用maven-jar-plugin插件来打包便可剥离出jar。spring

问题抛出了,那么如何解决吗?修改pom.xml文件,把原来的spring-boot-maven-plugin打包插件换成maven-jar-pluginapache

<build>
  <plugins>
	<plugin>
	   <groupId>org.apache.maven.plugins</groupId>
	   <artifactId>maven-jar-plugin</artifactId>
	   <configuration>
		 <archive>
		   <manifest>
		     <addClasspath>true</addClasspath>
		     <classpathPrefix>lib/</classpathPrefix>
             <!--此处修改成你的应用入口类全路径-->
		     <mainClass>com.jetsen.edu.StatisticsApplication</mainClass>
	       </manifest>
		 </archive>
	   </configuration>
	</plugin>
	<plugin>
      <!--这个插件就是把依赖的jar包复制出来放到编译后的target/lib目录,而且在打包时候排除内部依赖-->
	  <groupId>org.apache.maven.plugins</groupId>
	  <artifactId>maven-dependency-plugin</artifactId>
	  <executions>
	    <execution>
		   <id>copy-dependencies</id>
		   <phase>prepare-package</phase>
		   <goals>
			  <goal>copy-dependencies</goal>
		   </goals>
		   <configuration>
			 <outputDirectory>${project.build.directory}/lib</outputDirectory>
			 <overWriteReleases>false</overWriteReleases>
			 <overWriteSnapshots>false</overWriteSnapshots>
			 <overWriteIfNewer>true</overWriteIfNewer>
		   </configuration>
	    </execution>
	  </executions>
	</plugin>
  </plugins>
</build>

接下来在项目根目录执行打包命令:mvn clean package -Dmaven.test.skip=true服务器

打包结束后我在target目录会发现有一个lib目录里面全是咱们项目依赖的jar文件,然咱们在发布时候把lib目录和打包好的jar文件一同上传到云服务器便可,之后若是项目依赖没有变化只须要上传xxxx.jar文件到云服务器, 执行 java -jar xxxx.jar & 命令便可,若是若依赖发生变化就须要替换lib目录 这种方式打包完的jar文件每每只有几百kb的大小,上传也是很是快。maven

相关文章
相关标签/搜索