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>