java - 将 java spring-boot 应用程序 *.jar 与根文件夹中的其他文件一起部署到 heroku

标签 java heroku deployment

我有一个名为 qsysprereg2-1.0.jar 的 Spring Boot 应用程序。我将我的应用程序的文件插入heroku git已经编译的jar文件+ Procfile +文件夹“config”中,作为“config/config.properties”。只是一些属性。 在 Gradle 中我只有:

apply plugin: 'java'
task stage() {
    println("Go stage...")
}  

全部编译和部署成功。

结果我有错误:

java.io.FileNotFoundException: config/config.properties (No such file or directory)

当然,因为:

Running bash on ⬢ qprereg... up, run.9546 (Free)
~ $ ls
Procfile  qsysprereg2-1.0.jar  system.properties

git 中没有文件夹“config”。但“config/config.properties”已被推送到 git 中。

如何添加包含文件的文件夹以部署工件?

最佳答案

抱歉,我没有找到好的解决方案。我做了一些技巧。我将所有配置文件作为资源放入 jar 中。在启动应用程序期间,我正在检查 dick 上的 jar 外部的文件,然后从资源处理到 dist。新文件保存在磁盘上没有问题。代码:

   public static void main(String[] args) {
        try {
            prepareConfig();
        } catch (IOException ex) {
            log.error("Config prepare fail.", ex);
            log.throwing(ex);
            throw new RuntimeException(ex);
        }
        SpringApplication.run(Application.class, args);
    }


    private static void prepareConfig() throws IOException {
        File dir = new File("config");
        if (!dir.exists() || !dir.isDirectory()) {
            log.info("Create config directory");
            Files.createDirectory(dir.toPath());
        }
        makeReady("config/config1.properties");
        makeReady("config/config2.properties");
        makeReady("config/config3.properties");
        makeReady("config/configN.properties");
    }

    private static void makeReady(String fileName) throws IOException {
        File file = new File(fileName);
        if (!file.exists()) {
            log.info("Create config file '{}'", file.getName());
            try (final InputStream stream = Application.class.getResourceAsStream("/" + fileName)) {
                Files.copy(stream, file.toPath());
            }
        }
    }

关于java - 将 java spring-boot 应用程序 *.jar 与根文件夹中的其他文件一起部署到 heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58921350/

相关文章:

java - 应用程序初始化后如何调用类中的方法?

java - 如何将 .dic 和 .aff 文件添加到 java jar 中?

deployment - Jenkins-将构建推广到不同的环境

java - 包部署最佳定义

java - 糟糕的 try catch block 设计?

ruby-on-rails - 使用 Heroku 来 db :pull a new database

heroku - 如何使用heroku的临时文件系统

java - Heroku 进程应该始终保持运行状态,但是当它被 ping 到时,它会崩溃并出现 H20 错误

ms-access - 将 Access 部署为客户端-服务器应用程序

java - Spring MVC : RequestMapping not working, 未识别 URL 路径