gpt4 book ai didi

java - 使用 gradle bootJar 而不是 jar 任务并且在 Jenkins 中构建失败

转载 作者:行者123 更新时间:2023-11-29 08:28:13 33 4
gpt4 key购买 nike

在我的 gradle.build 文件中开始使用 spring boot gradle 插件后,在 jenkins 上构建失败。

classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.2.RELEASE")

本地一切正常,包括构建、测试和 Web 应用程序在 Jetty 上运行良好。唯一的问题是在任务 artifactoryPublish 中 Jenkins 的构建失败。它说:

File '/var/lib/jenkins/jobs/release-my-project/workspace/build/libs/workspace-0.2.1-SNAPSHOT.jar' does not exists, and need to be published!

不确定 gradle artifactoryPublish 任务发生了什么。我认为任务来自 Jenkins。

在使用spring boot gradle插件之前,我在gradle.build中的jar任务如下:

jar {
baseName = 'my-project'
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
configurations.runtime.collect {
it.isDirectory() ? it : zipTree(it)
}
}
manifest {
attributes 'Main-Class':'com.example.Application'
}
// Exclude manifest signature files
exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/LICENSE'
}

由于spring boot gradle plugin禁用了jar任务,取而代之的是bootJar任务,所以我配置bootjar任务如下:

bootJar {
baseName = 'my-project'
mainClassName = 'com.example.Application'
// Exclude manifest signature files
exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/LICENSE'
}

我从 jenkins 日志中注意到的一件事是它说文件 workspace-0.2.1-SNAPSHOT.jar 不存在。好像它正在寻找错误的文件。以前,它查找正确的文件 my-project-0.2.1-SNAPSHOT.jar。当我在本地构建时,创建了这个 jar 文件。不确定是什么让 jenkins 寻找 workspace-0.2.1-SNAPSHOT.jar。它应该是 my-project,因为我在 bootJar 任务中定义了 baseName。

知道这里出了什么问题吗?谢谢。

最佳答案

除非您明确定义项目名称,否则 Gradle 将使用目录名称作为项目名称。在 Jenkins 上,项目目录称为“工作区”。 artifactoryPublish 大概是使用项目名称来确定要发布的 JAR 文件的名称。如果是这样的话,那不是好的做法。

无论如何,您确实应该设置项目的名称。然后,您不必在 Jar 任务上显式设置 baseName。只需在项目的根目录中添加一个 settings.gradle 文件,即在 build.gradle 文件旁边,并将其内容设置为:

rootProject.name = "my-project"

这应该有望解决问题,尽管它实际上取决于 artifactoryPublish 任务正在做什么。

关于java - 使用 gradle bootJar 而不是 jar 任务并且在 Jenkins 中构建失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50636093/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com