# 如何把EOS8应用打包成一个独立可执行的fatjar包

EOS8默认打包的介质是一个tar.gz,虽然包含了一个可执行的fatjar包,为了方便修改配置文件,应用中的配置等文件并不在fatjar中,具体的目录结构如下:

    eos8app                        eos8app应用目录
     ├── bin                       
     │   ├── startup.sh            eos8app应用启动脚本
     │   └── shutdown.sh           eos8app应用停止脚本
     ├── config                    eos8app配置文件目录(springboot的properties文件)
     │   ├── {APP_NAME}/config     eos8app的eos的配置文件目录(使用springboot应用名作为目录)
     │   │   ├── user-config.xml   eos8的用户配置文件(jdbc链接等)
     │   ├── └── user-config.xml   eos8的用户配置文件(jdbc链接等)
     ├── db-scripts                eos8平台和应用的初始化脚本目录
     ├── lib                       存放数据库驱动包以及三方jar包,eos8平台的补丁目录
     ├── logs                      存放启动后的日志文件
     └── {fatjar}.jar              eos8App应用打包后的fatjar包

在有一些客户场景中,客户为了统一管理,不能够有复杂目录结构和shell脚本文件,因此需要将eos8的应用打包成一个可以直接执行的fatjar,可以通过下面步骤修改源代码工程实现独立fatjar效果

  • 把项目中的boot构件包下的”配置“节点下的所有properties文件拷贝到配置下的resources目录中
  • 把项目中的boot构件包下的static目录拷贝到boot构件包的src目录中(这一步是针对精简应用express的,如果是其他类型应用不需要)
  • 修改项目的pom文件,增加mysql数据库的依赖关系
    ...
    	<dependency>
    		<groupId>mysql</groupId>
    		<artifactId>mysql-connector-java</artifactId>
    		<version>8.0.17</version>
    	</dependency>
    ...
    
  • 修改项目中的boot构件包下的pom文件,删掉mysql配置
  • 选中项目,点击右键执行maven build... ,输入package,就可以在boot构件包下的target目录中找到对应的fatjar
  • 通过java命令启动这个fatjar
    # 单fatjar的启动命令行
    java -Dsun.misc.URLClassPath.disableJarChecking=true -server -Djava.net.preferIPv4Stack=true -Duser.timezone=Asia/Shanghai -Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -Djava.security.egd=file:/dev/./urandom -Xms512m -Xmx2048m -Xmn256m -XX:+HeapDumpOnOutOfMemoryError -jar com.primeton.eos.project.boot-1.0.0.jar
    
上次更新: 2023/3/31下午3:56:58