gpt4 book ai didi

java - Gradle Spring Boot 插件在 Linux 上损坏

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:07 26 4
gpt4 key购买 nike

我有一个多模块 gradle 构建,其中一个模块包含一个 spring boot 应用程序,该应用程序使用其他模块的工件。我将 spring boot 插件应用于单个 spring boot 模块。

在 Windows 中一切正常,但一旦我尝试在 Linux 机器上构建,如果失败。我已经尝试了多台 linux 机器(Jenkins 服务器、Ubuntu VM,甚至是 bitbucket 管道),但都失败并出现此错误:

Problems reading data from Binary store in /tmp/gradle2075404181876889604.bin (exist: false)

我不完全确定 gradle 使用这个二进制存储的目的是什么,但在调试之后我发现这个文件名与构建时每个其他模块使用的二进制存储不同。

我尝试了多个 gradle 版本(2、3 和 4)和几个 spring boot 版本,但它们都因相同的错误而失败。解决这个问题的唯一方法是删除 spring boot 插件。

这里是父级build.gradle

    repositories {
mavenCentral()
}

def javaLangVersion = '1.8'
def gradleDir = "${rootProject.rootDir}/gradle"
def realProjects = allprojects - [project(':external'), project(':delivery')]
def javaProjects = realProjects - rootProject
def integrationTestProjects = javaProjects

configure(realProjects) {
group 'com.packagename'
version '1.0-SNAPSHOT'

apply plugin: 'eclipse'
apply plugin: 'idea'
}

configure(javaProjects) {
apply plugin: 'java'

targetCompatibility = javaLangVersion
sourceCompatibility = javaLangVersion

repositories {
mavenCentral()
}

dependencies {
compile group: 'org.slf4j', name: 'slf4j-api', version: "${slf4jVersion}"
compile group: 'org.slf4j', name: 'log4j-over-slf4j', version: "${slf4jVersion}"

testCompile group: 'junit', name: 'junit', version: "${junitVersion}"
testCompile group: 'org.mockito', name: 'mockito-core', version: "${mockitoVersion}"
testCompile group: 'nl.jqno.equalsverifier', name: 'equalsverifier', version: "${equalsverifierVersion}"
}
}

configure(integrationTestProjects) {
apply from: "${gradleDir}/integrationTest.gradle"
}

task wrapper(type: Wrapper) {
gradleVersion = '3.5'
}

这里是spring boot模块的build.gradle文件:

buildscript {
ext {
springBootVersion = '1.5.3.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootStarterVersion}")
}
}

apply plugin: 'org.springframework.boot'
apply plugin: 'war'

war {
baseName = "${project.name}"
version = "${project.version}"
}

dependencies {
compile project(':module1')
compile project(':module2')

compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-rest'

compile group: 'org.apache.httpcomponents', name: 'httpcore', version: "${httpCoreVersion}"
compile group: 'org.apache.httpcomponents', name: 'httpclient', version: "${httpClientVersion}"

compile group: 'com.h2database', name: 'h2', version: "${h2Version}"

testCompile project(':test-utils')
testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test'
}

所有其他模块都是纯 java 模块,只在构建文件中声明一个依赖 block 。

我已经为此工作了 2 天,因此非常感谢任何帮助或建议。谢谢!

最佳答案

嗯,这太令人尴尬了...我使用 FileUtils.getTempDirectory() 进行了单元测试,然后我在测试后使用 FileUtils.deleteQuietly 清理了该目录,它正在删除/tmp 中的 gradle 二进制存储文件夹。它没有在 Windows 上显示的原因是 Windows 锁定了文件。

关于java - Gradle Spring Boot 插件在 Linux 上损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46242780/

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