吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3724|回复: 1
收起左侧

[Java 转载] 我的开源小项目 - Linux Spring Boot Startup Generator

  [复制链接]
简单美好King 发表于 2019-6-13 17:42

为什么开发这个小项目

1.之前写了篇博客:Spring Boot Linux 部署脚本,
2.但是在实际开发中,需要手动修改其中的配置,有三处需要修改。
3.需要用chmod +x 赋予可执行权限
4.需要建立相关目录结构

综上所述,主要研究了 java打包tar,java赋予文件可执行权限相关内容
开发出了Linux Spring Boot Startup Generator from Github

在线使用方式 http://www.boommanpro.cn:8088/downloadTarGz?projectName=xxx

将猴嘴projectName参数值修改为你自己想要的即可

Release版本

Release页面下载 以 jar 结尾的文件

本地部署: java -jar linux-spring-boot-startup-generator.jar 运行即可

部署完成后-->点击本地测试地址即可下载

linux部署

Release页面下载 以 tar.gz结尾的文件

tar -zvxf linux-spring-boot-startup-generator.tar.gz

在目录中运行./startup即可

项目核心源码分析

1.模板框架采用Thymeleaf

/**
 * @AuThor <a href="mailto:boommanpro@gmail.com">BoomManPro</a>
 * @date 2019/6/5 16:21
 * @created by BoomManPro
 */
public enum ThymeLeafConfig {
    /**
     * Thymeleaf默认配置
     */
    INSTANCE;
    private TemplateEngine templateEngine;

    private static final String DEFAULT_PREFIX = "/templates/";

    ThymeLeafConfig() {
        //因读取的是Resource的文件 需要是ClassLoaderTemplateResolver
        ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
        templateResolver.setPrefix(DEFAULT_PREFIX);
        templateResolver.setTemplateMode(TemplateMode.TEXT);
        templateEngine = new TemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);
    }

    public static TemplateEngine getTemplateEngine() {
        return INSTANCE.templateEngine;
    }
}

2.tar压缩后的文件解压具有可执行权限

/**
 * @author <a href="mailto:boommanpro@gmail.com">BoomManPro</a>
 * @date 2019/6/5 16:21
 * @created by BoomManPro
 */
@Slf4j
public class GzipUtil {
    public static InputStream pack(GeneratorFile[] generatorFiles) {

        ByteArrayOutputStream out = new ByteArrayOutputStream();
        TarArchiveOutputStream os = new TarArchiveOutputStream(out);
        try {
            for (GeneratorFile generatorFile : generatorFiles) {

                TarArchiveEntry tarArchiveEntry = new TarArchiveEntry(generatorFile.getFileName());
                if (generatorFile.isExecutable()) {
                    // = (octal) 0100755
                    tarArchiveEntry.setMode(33261);
                }
                byte[] bytes = new byte[]{};
                if (StringUtils.notBlank(generatorFile.getContent())) {
                    bytes = generatorFile.getContent().getBytes();
                    tarArchiveEntry.setSize(bytes.length);

                }
                os.putArchiveEntry(tarArchiveEntry);
                IOUtils.copy(new ByteArrayInputStream(bytes), os);
                os.closeArchiveEntry();

            }
        } catch (IOException e) {
            log.error("Exception:", e);
        } finally {
            try {
                os.flush();
                os.close();
            } catch (IOException e) {
                log.error("os Exception:", e);
            }
        }
        return IoConvertUtil.parse(out);
    }

}

可执行: // = (octal) 0100755  tarArchiveEntry.setMode(33261); 涉及到进制转换

写在最后

如果当前项目帮助到了你,希望能够给个start哈,感激!!

免费评分

参与人数 2吾爱币 +4 热心值 +2 收起 理由
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
vectra + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yc19951005 发表于 2019-6-13 19:27
没看懂具体是干嘛的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 09:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表