我已使用命令 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的控制台输出:
任何人都可以帮助我。谢谢
答案 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。