問題場景:平時在springboot項目中,打jar包都是默認把開發(fā)的代碼和依賴jar包都打到一個jar包里,導(dǎo)致每次打包費時而且jar包還很大,升級一下都要把一個很大的包拷來拷去。如果是修改問題需要頻繁替換jar包,那簡直要瘋
解決方案:把代碼包打成我們需要的jar包,把依賴的jar包打在依賴jar包文件夾中,其實絕大部分都是依賴包,自己開發(fā)的代碼打包其實是很小的,比如我這次遇到的問題就是整個jar包一百多M,但是我自己開發(fā)的核心代碼還不到1M
具體實現(xiàn)方法
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jettech.jettomanager</groupId>
<artifactId>jettomanager-basic</artifactId>
<version>v7.5.0</version>
<name>jettomanager-basic</name>
<packaging>jar</packaging>
<description>Jettech jettomanager basic</description>
<url>http://www.jettech.jettomanager.com</url>
<organization>
<name> Jettech Software, Inc.</name>
<url>http://www.jettech.com</url>
</organization>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
</parent>
<properties>
</properties>
<dependencies>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid-spring-boot-starter.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>${project.artifactId}-${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 啟動類的路徑 -->
<mainClass>xxxxxxxxxxxxx</mainClass>
<!-- 包含引入本地的Jar -->
<layout>ZIP</layout>
<includes>
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration> <!--指定的依賴路徑-->
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!--打包的時候去除依賴包-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<configuration>
<mainClass>com.sunwei.syslog.SyslogApplication</mainClass>
<layout>ZIP</layout>
<includes>
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!--target/lib是依賴jar包的輸出目錄,根據(jù)自己喜好配置-->
<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>target/lib</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<stripVersion>false</stripVersion>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
2.在以上配置完成后,執(zhí)行打包命令 mvn clean package ?,會看到代碼被打成了比較小jar包,依賴包被打在target文件夾下面的lib文件夾中
3.啟動項目方式。將jar包和依賴的lib文件夾拷貝到服務(wù)器的同一文件目錄下執(zhí)行
java -Dloader.path="lib" -jar xx.jar文章來源:http://www.zghlxwxcb.cn/news/detail-629061.html
即可啟動項目,xx.jar就是你打的那些個jar包
?文章來源地址http://www.zghlxwxcb.cn/news/detail-629061.html
到了這里,關(guān)于mvn build jar依賴和源碼本身分開。減輕編譯后的jar大小的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!