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

FatJar打包和FatJar启动配置文件修改。

一、FatJar打包和FatJar启动配置文件修改。
打成FatJar pom配置文件。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<target>1.8</target>
<source>1.8</source>
</configuration>
</plugin>
</plugins>
</build> 

1. ​​spring-boot-maven-plugin​​
​​作用​​:这是Spring Boot项目的核心插件,主要用于打包和运行Spring Boot应用。
​​打包可执行JAR​​:默认情况下,Maven打包生成的JAR文件不包含依赖库(仅包含项目代码),而该插件会将所有依赖库和项目代码打包成一个​​可执行的Fat JAR​​(包含BOOT-INF目录和嵌入式Tomcat等),使得应用可以通过java -jar命令直接运行。
​​支持Spring Boot特性​​:例如自动配置、内嵌服务器等。
​​生命周期集成​​:在Maven的package阶段自动执行打包逻辑,无需额外配置。

2. ​​maven-compiler-plugin​​
​​作用​​:控制Java源代码的编译行为。
​​编码设置​​:<encoding>UTF-8</encoding>指定源码文件的编码格式,避免因编码不一致导致的编译错误(如中文乱码)。
​​JDK版本兼容性​​:
<source>1.8</source>:指定编译器使用Java 8语法解析源代码。
<target>1.8</target>:确保生成的字节码兼容Java 8运行时环境。
这两个配置共同保证项目在Java 8环境下编译和运行,避免因高版本JDK默认行为导致的兼容性问题。


二、FatJar介绍
检查JAR文件内的META-INF/MANIFEST.MF文件是否包含正确的Main-Class属性,并确认其指向实际存在的类名(包括完整包路径)。对于Spring Boot项目,主类通常是org.springframework.boot.loader.JarLauncher。
​​类路径问题​​:如果应用程序依赖其他库,确保这些库也位于类路径中。可以使用-cp参数指定额外的类路径元素。
​​JAR文件结构问题​​:使用jar tf yourJar.jar命令检查JAR文件内容,确保主类文件存在。


三、服务启动时,配置文件修改。
1.一般只能外挂spring.config.location配置文件。
# 启动服务
echo -e "Starting the task..."
nohup java -jar -Dtsf_consul_ip=ip -Dtsf_consul_port=8500 -Dtsf_application_id=a -Dtsf_group_id=b -Dtsf_token=c -Dtsf_app_id=d -Dtsf.swagger.enabled=false main-1.0.0-SNAPSHOT.jar  --spring.config.location=application.properties,application-dameng.properties  >main.log 2>&1 &


2.如果要修改其他的一些配置文件,可以在BOOT-INF/classes目录定义好文配置文件,然后推送到jar包当中。或者可以直接vi jar包,找到对应的文件路径,进行修改。
jar xf your-app.jar BOOT-INF/classes/config.yml  # 提取
vim BOOT-INF/classes/config.yml                 # 修改
jar uf your-app.jar BOOT-INF/classes/config.yml # 更新


可以利用vi命令直接修改FatJar内的文件。​
可以直接准备一个BOOT-INF/classes,将配置文件等放到这个下面,然后将配置文件推到jar包文件里。
# 更新回 Jar 包
jar uf your-app.jar BOOT-INF/classes/application.properties


其他:
指定classpath,指定启动类
/usr/local/jdk1.8.0_121/bin/java -Xms64m -Xmx800m -XX:MaxPermSize=256M -XX:MaxDirectMemorySize=512m -classpath $CONF_DIR:$LIB_DIR/* cn.xxx.MainApplication >/dev/null 2>&1 &

三种打包配置:
<!-- 会打成FatJar包 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

<!-- 跳过打包,不生成FatJar -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<skip>true</skip> <!-- 关键配置:跳过打包 -->
</configuration>
</execution>
</executions>
</plugin>

<!-- 禁用springboot打一个大包插件 -->
<!-- 生成tar.gz,保留普通的jar,可进行jar包增量更新 -->
<!-  配合maven-assembly-plugin,进行自定义打包规则 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>

http://www.dtcms.com/a/279655.html

相关文章:

  • pattern of distributed system 读书笔记-Overview of the Patterns
  • Rsyslog介绍及运用
  • JAVA并发--深入了解CAS机制
  • VirtualBox 安装 CentOS7 后无法获取 IP 的排查与修复
  • 网络请求和下载
  • 在Adobe Substance 3D Painter中,已经有基础图层,如何新建一个图层A,clone基础图层的纹理和内容到A图层
  • Zabbix在MySQL性能监控方面的运用
  • 多线程(6)
  • Rust配置国内源
  • MySql:sql语句中数据库别名命名和查询问题
  • 什么是存储引擎以及MySQL常见的三种数据库存储引擎
  • Kotlin Map映射转换
  • 游戏玩法的专利博弈
  • Python:打造你的HTTP应用帝国
  • 内容管理系统指南:企业内容运营的核心引擎
  • 宝塔面板常见问题
  • c++算法一
  • GNhao,长期使用跨境手机SIM卡成为新趋势!
  • LeetCode 692题解 | 前K个高频单词
  • VScode链接服务器一直卡在下载vscode服务器/scp上传服务器,无法连接成功
  • 【DataWhale】快乐学习大模型 | 202507,Task01笔记
  • 总结一下找素数的三种方法
  • Python3完全新手小白的学习手册 13-1项目篇《外星人入侵》
  • MFC中BOOL类型,在某些操作系统中,-1不能被识别,一般是哪些原因?
  • MFC UI控件CheckBox从专家到小白
  • MFC UI表格制作从专家到入门
  • Cocos Creator 高斯模糊效果实现解析
  • 《星盘接口2:NVMe风暴》
  • C++_编程提升_temaplate模板_案例
  • ether.js—3—contract