我有一个多模块的gradle构建,其中包含一个spring引导应用程序,它消耗了其他模块的工件。我已经将弹簧启动插件应用于单弹簧引导模块。
所有东西在Windows中都能正常工作,但是一旦我尝试Linux机器上的构建,如果失败的话。我尝试过多台linux机器(Jenkins服务器、Ubuntu,甚至bitbucket管道),但它失败了,出现了以下错误:
Problems reading data from Binary store in /tmp/gradle2075404181876889604.bin (exist: false)我不完全确定gradle使用这个二进制存储的目的,但是经过调试,我发现这个文件名与每个其他模块在构建时使用的二进制存储不同。
我尝试过多个gradle版本(2、3和4)和几个spring引导版本,它们都失败了,但都有相同的错误。唯一能解决这个问题的方法是删除弹簧引导插件。
下面是父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引导模块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模块,只在构建文件中声明依赖项块。
我已经为此工作了两天,所以任何帮助或建议都将不胜感激。谢谢!
发布于 2017-09-15 17:19:25
这太尴尬了..。我使用FileUtils.getTempDirectory()进行了单元测试,然后在测试后使用FileUtils.deleteQuietly清除该目录,它正在删除/tmp文件夹中的gradle二进制存储。它之所以没有显示在windows上,是因为windows会锁定文件。
发布于 2017-09-15 16:45:30
您在Linux机器上验证了您的gradle.properties是否正常吗?
https://stackoverflow.com/questions/46242780
复制相似问题