首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有运行在Docker容器上的Gradle Shadow插件.jar,没有主清单属性

没有运行在Docker容器上的Gradle Shadow插件.jar,没有主清单属性
EN

Stack Overflow用户
提问于 2022-12-04 06:59:13
回答 1查看 10关注 0票数 0

我使用分级阴影插件构建了一个胖罐子,如下所示:

代码语言:javascript
复制
tasks {
    "build" {
        dependsOn(shadowJar)
    }
    shadowJar {
        mergeServiceFiles {
            var path = "META-INF/"
        }
        manifest.inheritFrom(jar.get().manifest)
        manifest.attributes["Main-Class"] = "some.main.class.Main"
        manifest.attributes["Implementation-Version"] = version
    }
}

这是没有问题的,当我做gradle buildjava -jar fat_jar_name.jar时,我已经在MacOSWindowsUbuntu (WSL)中进行了测试。相同的命令在所有这些平台上的工作方式完全相同,即使.jar不是在本地构建的,但出于某种原因,它在Docker中不能使用eclipse-temurin

我试图使用以下方法在Docker中运行一个.jar文件:

代码语言:javascript
复制
FROM eclipse-temurin:17
ARG JAR_FILE=build/libs/*jar
COPY ${JAR_FILE} fat_jar_name-all.jar

ENTRYPOINT java -jar fat_jar_name.jar

我使用docker image build -t image_name .构建映像,然后尝试使用docker run -d -p 8080:8080 image_name运行它。

我在运行时会得到这个错误:

代码语言:javascript
复制
no main manifest attribute, in fat_jar_name-all.jar

我发现这个问题与导出的META-INF\MANIFEST.MF文件中没有一个.jar文件有关。但是,fat_jar_name.jar确实包含一个清单文件,其中包含以下内容:

代码语言:javascript
复制
Manifest-Version: 1.0
Main-Class: some.main.class.Main
Implementation-Version: 3.9.1-SNAPSHOT

DockerGradleShadow Plugin级别上,有什么东西是我所缺少的吗?

我为Shadow Plugin找到了关于配置清单的Shadow Plugin,但是它没有提到main manifest attribute

EN

回答 1

Stack Overflow用户

发布于 2022-12-04 07:22:31

我发现我使用的COPY命令被破坏了。我用这个代替了:

代码语言:javascript
复制
FROM eclipse-temurin:17
COPY build/libs/fat_jar_name-all.jar /
ENTRYPOINT java -jar fat_jar_name-all.jar
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74673460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档