当前位置: 首页 > news >正文

使用maven快速生成打包文件2

前面介绍了使用Maven打包基于SpringBoot开发的微服务,打出的JAR包包含所有的依赖,因此一般包比较大,可能会有几百M,但是有时候在调试阶段,经常需要更新程序,每更新一次就要上传几百M的JAR包,特别不方便,因此这里提供一种方法将依赖的JAR包统一放到lib目录中,这样打出的微服务包就很小了,更新起来也方便很多。先上pom.xml文件

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>kafka-roma</artifactId><version>1.0</version><name>kafka-roma</name><description>kafka-roma</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.6.13</spring-boot.version><maven.test.skip>true</maven.test.skip></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>2.7.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.52</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><finalName>${project.artifactId}</finalName><resources><resource><directory>src/main/resources</directory><filtering>true</filtering><excludes><exclude>*.properties</exclude><exclude>*.yml</exclude><exclude>*.xml</exclude></excludes></resource></resources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>${java.version}</source><target>${java.version}</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix><mainClass>org.example.roma.KafkaRomaApplication</mainClass></manifest></archive></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><includeSystemScope>true</includeSystemScope><layout>ZIP</layout><jvmArguments>-Dfile.encoding=UTF-8</jvmArguments><includes><include><groupId>nothing</groupId><artifactId>nothing</artifactId></include></includes></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><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}/roma/lib</outputDirectory><overWriteReleases>false</overWriteReleases><overWriteSnapshots>false</overWriteSnapshots><overWriteIfNewer>true</overWriteIfNewer><includeScope>compile</includeScope><excludeScope>test</excludeScope><excludeArtifactIds>junit-jupiter,junit-jupiter-api,junit-jupiter-engine,junit-jupiter-params,junit-platform-commons,junit-platform-engine</excludeArtifactIds></configuration></execution></executions></plugin><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><includes><include>*.properties</include><include>*.yml</include><include>**/*.xml</include></includes></resource></resources><outputDirectory>${project.build.directory}/roma/config/</outputDirectory></configuration></execution></executions></plugin><plugin><artifactId>maven-resources-plugin</artifactId><executions><execution><id>copy-resources1</id><phase>package</phase><goals><goal>copy-resources</goal></goals><configuration><resources><resource><directory>src/main/bin</directory><includes><include>start.sh</include><include>stop.sh</include></includes></resource></resources><outputDirectory>${project.build.directory}/roma/bin/</outputDirectory></configuration></execution><execution><id>copy-resources2</id><phase>package</phase><goals><goal>copy-resources</goal></goals><configuration><resources><resource><directory>src/main/bin</directory><includes><include>run.sh</include><include>run.bat</include></includes></resource></resources><outputDirectory>${project.build.directory}/roma/</outputDirectory></configuration></execution><execution><id>copy-resources3</id><phase>package</phase><goals><goal>copy-resources</goal></goals><configuration><resources><resource><directory>cert</directory><includes><include>*.jks</include><include>*.crt</include></includes></resource></resources><outputDirectory>${project.build.directory}/roma/cert/</outputDirectory></configuration></execution><execution><id>copy-resources4</id><phase>package</phase><goals><goal>copy-resources</goal></goals><configuration><resources><resource><directory>${project.build.directory}</directory><includes><include>*.jar</include></includes></resource></resources><outputDirectory>${project.build.directory}/roma/</outputDirectory></configuration></execution></executions></plugin></plugins></build>
</project>

这里只介绍一下不同的部分,相同的部分,参看前面一篇

<plugin><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}/roma/lib</outputDirectory><overWriteReleases>false</overWriteReleases><overWriteSnapshots>false</overWriteSnapshots><overWriteIfNewer>true</overWriteIfNewer><includeScope>compile</includeScope><excludeScope>test</excludeScope><excludeArtifactIds>junit-jupiter,junit-jupiter-api,junit-jupiter-engine,junit-jupiter-params,junit-platform-commons,junit-platform-engine</excludeArtifactIds></configuration></execution></executions>
</plugin>

maven-dependency-plugin插件将项目的依赖库复制到一个指定的目录中,指定的目录配置到outputDirectory即可。excludeScope表示将test的依赖排除掉,也可以在excludeArtifactIds中指定特定的依赖。
然后编译打包的时候,只需执行maven clean package即可。


http://www.mrgr.cn/news/15505.html

相关文章:

  • 【Rust光年纪】保护用户数据安全隐私:探秘Rust机密计算与安全库
  • 科技赋能 重塑未来医疗丨共谋医疗信息化新方向,2024东北医院信息网络大会圆满落幕!
  • Oracle中数据类型 NVARCHAR2 与 VARCHAR2 的对比
  • 最好的超声波清洗机是哪一款?好用的超声波清洗机排名
  • 嘴上说“摆烂”的90后,考了最多的PMP证书......
  • SOMEIP_ETS_073: Union_with_wrong_type_field_for_union_member_Padding
  • git---gitignore--忽略文件
  • 第T10周:使用TensorFlow实现数据增强
  • MySQL基础学习:如何排查慢SQL
  • Avalonia 播放 VLC 视频(Windows / Linux)
  • AIM-D100-CA直流绝缘监测仪筑牢电动汽车充电安全防线
  • 从零到一!如何用AIppt一键完成一份专业ppt的制作
  • 继电器测试负载箱的常见参数和规格有哪些需要关注?
  • 8种数据结构
  • mac电脑登录循环重启问题
  • linux命令学习-awk命令
  • 访问Neo4j验证失败(The client is unauthorized due to authentication failure.)
  • 聚餐地计算(华为od机考题)
  • SSH和Git的基本知识
  • Linux安装使用Apache(Windows下载,离线安装)