将安装包打包成RPM包并实现自定义流程安装 迷南。 2022-09-03 05:13 181阅读 0赞 这里主要借助idea 和gradle 使用netflix的插件包进行打包 插件包地址:[https://github.com/nebula-plugins/gradle-ospackage-plugin/wiki/RPM-Plugin][https_github.com_nebula-plugins_gradle-ospackage-plugin_wiki_RPM-Plugin] 配置可以根据wiki配置 首先引入依赖 dependencies{ classpath "com.netflex.nebula:gradle-ospackage-plugin:8.5.6" } //这里我是配置在subprojects里面,可以参考官方配置位置都可以使用 subprojects{ apply plugin: 'nebula.ospackage' ospackage{ //设置打包后的文件名称 packageName = '' //设置打包后文件版本 version = '' //以上不填默认使用你打包的原本名称 arch 'X86_64' os 'LINUX' type 'BINARY' //设置操作权限 user 'nobody' permissionGroup 'nobody' //这里以打包jar包为例,可以指定任意目录实现打包任意的包 //下面默认相对路径是当前项目下 平级src 也可以指定绝对路径 from files("/build/libs"){ //这里url是指定在rpm包的里面的路径,在后面安装时可以根据路径取出文件 //例如 /opt/user into 'url' } from files("/src/main/resources"){ //这里url是指定在rpm包的里面的路径,在后面安装时可以根据路径取出文件 into 'url' } } //下面是在执行rpm安装时做的任意操作 buildRpm{ //指定在linux的工作空间 url为目录 directory("url",0755) //在安装前执行 preInstall("这里可以填入shell命令") //在安装后执行 postInstall("这里可以填入shell命令") //示例 这里我是将jar 解压拷贝到指定目录,并创建成服务 postInstall("tar -xvf /opt/* -C /opt/;") postInstall("ln -s /opt/*.service /etc/systemd/system/;") //这里这里灵活配置shell命令,例如可以安装mysql 通用tar包,并安装完成后将一切配置设置好 //可以打包项目一键式安装 } } 执行命令只需要在idea 的Terminal 中或者在可以执行gradle命令的地方执行 gradle buildRpm 会自动将rpm包生成在/build/distributions下 ps 若是微服务,只要配置好lib位置会将所有的jar包打包在对应自子服务模块下 上传到linux服务器下执行:rpm -Uvh --force --nodeps \*.rpm --nodigest [https_github.com_nebula-plugins_gradle-ospackage-plugin_wiki_RPM-Plugin]: https://github.com/nebula-plugins/gradle-ospackage-plugin/wiki/RPM-Plugin
还没有评论,来说两句吧...