簡體   English   中英

Gradle Spring Boot插件在Linux上損壞

[英]Gradle Spring Boot plugin broken on Linux

我有一個包含單個模塊的多模塊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模塊,並且僅在構建文件中聲明依賴項塊。

我已經為此工作了2天,因此任何幫助或建議將不勝感激。 謝謝!

您是否在Linux機器上確認gradle.properties正常?

好吧,這真令人尷尬...我使用FileUtils.getTempDirectory()進行了單元測試,然后在測試后使用FileUtils.deleteQuietly清理該目錄,並刪除了/ tmp文件夾中的gradle二進制存儲。 它沒有在Windows上顯示的原因是Windows鎖定文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM