使用Heroku部署一个Spring Boot应用程序,该应用程序依赖于Maven子模块



我想用Heroku部署一个Spring Boot应用程序,它是多模块Maven项目的一部分,并引用其中一个子模块:

$ ls .
api/
models/
Procfile
pom.xml

主父pom.xml具有以下模块:

<modules>
<module>models</module>
<module>api</module>
</modules>

api项目引用了具有以下的models模块

<dependency>
<groupId>com.test</groupId>
<artifactId>models</artifactId>
<version>1.0</version>
</dependency>

Procfile的内容为:

web: java -Dserver.port=$PORT -jar $PATH_TO_JAR

现在,当我执行git push heroku master命令时,我收到这个错误:

remote: [ERROR] Failed to execute goal on project api: 
Could not resolve dependencies for project com.test:api:jar:1.0: 
Could not find artifact com.test:models:jar:1.0 in central (https://repo.maven.apache.org/maven2) -> [Help 1]

如何正确解决本地子模块依赖关系?

Heroku从头开始构建Maven reactor(在git push上(,但它无法找到api依赖项,因为它既不在本地Maven中,也不在Maven中心
在本地,您将首先使用mvn install子模块或使用system作用域。

如果使用Heroku Docker部署应用程序,则可以保持相同的体系结构。

Dockerfile打包您在本地创建的SpringBoot jar文件:

FROM adoptopenjdk/openjdk11:latest
RUN mkdir -p /software
ADD target/mySpringBoot.jar /software/mySpringBoot.jar
CMD java -Dserver.port=$PORT $JAVA_OPTS -jar /software/mySpringBoot.jar

创建SpringBoot应用程序jar文件,然后构建/推送映像到Heroku

# build project locally (ie Springboot jar file)
mvn clean package
# build/push to Docker
heroku container:push web -a myapp
heroku container:release web -a myapp

不要忘记登录Heroku Docker注册表(heroku container:login(,只需要一次。

相关内容

最新更新