首页 > 解决方案 > 应用程序构建成功但出现错误:运行图像时出现“没有主清单属性,在 app.jar 中”

问题描述

我正在尝试在 docker 上部署我的 spring boot 应用程序。我创建了一个 docker 文件,如下所示。

FROM registry.gitlab.com/client/micro/micro-services/baseimage/database-baseimage/tmo-main:database-baseimage-1.0.1f28a87b

ADD  ./target/*.jar app.jar
ENV TZ=America/Los_Angeles
ENTRYPOINT ["java","-XX:+UnlockExperimentalVMOptions","-XX:+UseContainerSupport","-XX:MaxRAMFraction=1","-XX:+UseG1GC","-jar","app.jar"]
EXPOSE 8080

docker 文件构建良好,但是当我运行图像时,它会引发以下错误:

OpenJDK 64-Bit Server VM warning: Option MaxRAMFraction was deprecated in version 10.0 and will likely be removed in a future release.
no main manifest attribute, in app.jar

请注意,我的应用程序在 JDK 11、maven build 上运行,并且已经为 spring-boot-maven-plugin 添加了依赖项。我在互联网上找不到此查询的适当解决方案。因此要求提供此错误的原因和解决方案。

标签: javaspring-bootdockermaven-plugin

解决方案


通过在 spring-boot-maven-plugin 中将执行目标设置为“重新打包”解决了这个问题。

<plugin> 
 <groupId>org.springframework.boot</groupId> 
 <artifactId>spring-boot-maven-plugin</artifactId> 
 <executions> 
  <execution> 
   <goals> 
    <goal>repackage</goal> 
   </goals> 
  </execution> 
 </executions> 
</plugin>

推荐阅读