Spring Boot 3、groovy、docker

问题描述 投票:0回答:1

我有一个带有以下 build.gradle 的 Spring Boot 3 应用程序

plugins {
    id 'groovy'
    id 'org.springframework.boot' version '3.1.3'
    id 'io.spring.dependency-management' version '1.1.3'
}

group = 'myPackage'
version = '0.0.1'

java {
    sourceCompatibility = '17'
}

repositories {
    mavenCentral()
}

dependencies {

    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-quartz'
    implementation 'org.apache.groovy:groovy'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    // für getter und setter als anotation ....
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'

    // Mysql
    // https://mvnrepository.com/artifact/mysql/mysql-connector-java
    implementation 'mysql:mysql-connector-java:5.1.49'

    // https://mvnrepository.com/artifact/org.apache.groovy/groovy-json
    implementation 'org.apache.groovy:groovy-json:4.0.14'

}

tasks.named('test') {
    useJUnitPlatform()
}

tasks.named('jar') {
    manifest {
        attributes["Main-Class"] = "mypackage.MyProject"
    }
}

如果我创建一个 jar 并在 docker 文件中使用这个 jar:

FROM openjdk:17
COPY build/libs/MyProject-*-plain.jar MyProject.jar
EXPOSE 8083
ENTRYPOINT ["java", "-jar", "MyProject.jar"]

我收到错误消息:

错误:无法找到或加载主类 mypackage.MyProject 2023-08-28T17:50:37.927951378Z 引起:java.lang.NoClassDefFoundError:groovy/lang/GroovyObject

谢谢您的帮助...

spring-boot docker groovy executable-jar
1个回答
0
投票

您使用了错误的人工制品。

COPY build/libs/MyProject-*-plain.jar MyProject.jar
(注意中的
-plain
) 名称)只是编译形式的“您的代码”。所有依赖项均丢失。 检查您的

build/libs

的尺寸:

# ls -lh build/libs/*.jar     
-rw-rw-r-- 1 user group  50M Aug 29 07:41 build/libs/project.jar 
-rw-rw-r-- 1 user group 326K Aug 29 07:41 build/libs/project-plain.jar

注意那里另一个更大的罐子。这是“uber”或“fat”罐子
Spring-Boot 为您构建,其中包含您的代码,还包含您的所有内容
部门。

如果您在为

COPY

选择此文件时遇到问题,您可以告诉 Spring-Boot 插件使用不同的名称。

旁注:

openjdk

始终是非生产图像,现在是偶数 已弃用。

    

© www.soinside.com 2019 - 2024. All rights reserved.