将javaspringboot app*.jar与根文件夹中的其他文件一起部署到heroku



我有一个名为qsysprereg2-1.0.jar的春季启动应用程序。我把已经编译好的jar文件+Procfile+文件夹"config"推到了heroku git中,我的应用程序的文件名为"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());
}
}
}

相关内容

最新更新