詹金斯(Jenkins)建罐

时间:2019-12-18 10:44:21

标签: spring spring-boot jenkins gradle jenkins-cli

我已使用命令 gradlew bootJar 在本地计算机(windows)中构建了一个可执行jar。jar的大小为17,178 Kb

现在我只尝试在本地计算机上构建和运行使用jenkins.Jar生成的大小远小于gradle生成的jar.jar的大小仅为2 Kb。

我通过在gradle脚本jenkins中将任务作为jar并进行构建来进行了尝试。

当我尝试运行jar时,出现如下错误

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
    at com.example.demo.DemoApplication.main(DemoApplication.java:13)
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 1 more

build.gradle

plugins {
    id 'org.springframework.boot' version '2.2.2.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-parent', version: '2.2.2.RELEASE', ext: 'pom'

    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
}
jar {
    enabled=true
}
jar {
    manifest {
        attributes(
                'Main-Class': 'com.example.demo.DemoApplication'
        )
    }
}

test {
    useJUnitPlatform()
}

Jenkins的控制台输出:

enter image description here

任何人都可以帮助我。谢谢

1 个答案:

答案 0 :(得分:2)

在这种情况下,创建简单的Jar将不起作用,因为它将简单地将您的源代码打包为jar。您需要的是独立的胖子罐。

Spring Boot插件已经交付了构建胖子罐所需的任务。您应该从gradle中删除以下代码。

jar {
    enabled=true
}
jar {
    manifest {
        attributes(
                'Main-Class': 'com.example.demo.DemoApplication'
        )
    }
}

在您的Jenkins文件中,将构建jar的命令更新为./gradlew build。 如果构建成功,则会在build/libs目录下生成一个胖jar。