将 java spring-boot app *.jar 与根文件夹中的其他文件一起部署到 heroku
Posted
技术标签:
【中文标题】将 java spring-boot app *.jar 与根文件夹中的其他文件一起部署到 heroku【英文标题】:Deploy java spring-boot app *.jar to heroku with other files in root folder 【发布时间】:2020-03-14 05:21:33 【问题描述】:我有一个 qsysprereg2-1.0.jar 的 Spring Boot 应用程序。我将已编译的 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。
如何添加文件夹以部署工件?
【问题讨论】:
***.com/questions/24724383/… 也许您可以检查您在构建(工件)之后创建的内部 jar 文件。相关文件是否存在。如果您的工件中没有文件,请尝试使用您的 maven 或 gradle 配置将相关资源添加到您的类路径中。 没有。忘记资源 【参考方案1】:抱歉,我没有找到好的解决方案。我做了一些技巧。我将所有配置文件作为资源放在 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 spring-boot app *.jar 与根文件夹中的其他文件一起部署到 heroku的主要内容,如果未能解决你的问题,请参考以下文章
清单错误将 spring-boot 启动为 java 应用程序
将已有的spring app迁移到spring-boot,手动配置spring-boot?
spring-boot 2.1.0 mongo - CodecConfigurationException:找不到类 java.time.Year 的编解码器