Sim*_*imo 4 java build gradle jenkins spring-boot
在我的 gradle.build 文件中开始使用 spring boot gradle 插件后,jenkins 上的构建失败。
classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.2.RELEASE")
Run Code Online (Sandbox Code Playgroud)
一切都在本地运行良好,包括构建、测试和 web 应用程序在 Jetty 上运行良好。唯一的问题是任务中 Jenkins 的构建失败artifactoryPublish。它说:
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!
Run Code Online (Sandbox Code Playgroud)
不确定 gradleartifactoryPublish任务发生了什么。我认为任务来自詹金斯。
在使用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'
}
Run Code Online (Sandbox Code Playgroud)
由于spring boot gradle插件禁用了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'
}
Run Code Online (Sandbox Code Playgroud)
我从 jenkins 日志中注意到的一件事是它说该文件workspace-0.2.1-SNAPSHOT.jar不存在。似乎它正在寻找错误的文件。以前,它会查找正确的文件my-project-0.2.1-SNAPSHOT.jar. 当我在本地构建时,创建了这个 jar 文件。不知道是什么让詹金斯寻找workspace-0.2.1-SNAPSHOT.jar。它应该my-project像我在 bootJar 任务中定义 baseName 一样。
知道这里有什么问题吗?谢谢。
除非您明确定义项目名称,否则 Gradle 将使用目录名称作为项目名称。在 Jenkins 上,项目目录被称为“工作区”。artifactoryPublish大概是使用项目名称来确定要发布的 JAR 文件的名称。如果是这种情况,那可不是好习惯。
无论如何,您确实应该设置项目的名称。你不会有明确设置baseName的Jar任务,然后。只需在项目的根目录,即build.gradle文件旁边添加一个settings.gradle文件,并将其内容设置为:
rootProject.name = "my-project"
Run Code Online (Sandbox Code Playgroud)
这应该有望解决问题,尽管这实际上取决于artifactoryPublish任务在做什么。
| 归档时间: |
|
| 查看次数: |
19349 次 |
| 最近记录: |