首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux上中断的Gradle Spring启动插件

在Linux上中断的Gradle Spring启动插件
EN

Stack Overflow用户
提问于 2017-09-15 15:16:11
回答 2查看 1.1K关注 0票数 1

我有一个多模块的gradle构建,其中包含一个spring引导应用程序,它消耗了其他模块的工件。我已经将弹簧启动插件应用于单弹簧引导模块。

所有东西在Windows中都能正常工作,但是一旦我尝试Linux机器上的构建,如果失败的话。我尝试过多台linux机器(Jenkins服务器、Ubuntu,甚至bitbucket管道),但它失败了,出现了以下错误:

代码语言:javascript
复制
Problems reading data from Binary store in /tmp/gradle2075404181876889604.bin (exist: false)

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

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

下面是父build.gradle

代码语言:javascript
复制
    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引导模块build.gradle文件:

代码语言:javascript
复制
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模块,只在构建文件中声明依赖项块。

我已经为此工作了两天,所以任何帮助或建议都将不胜感激。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-15 17:19:25

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

票数 1
EN

Stack Overflow用户

发布于 2017-09-15 16:45:30

您在Linux机器上验证了您的gradle.properties是否正常吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46242780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档