Java 带装配模块的渐变弹簧防尘套
我是Gradle的新手,我面临一个问题(使用Gradle 2.14) 我的项目有3个子项目:组装、sprinBootProject、E2EJava 带装配模块的渐变弹簧防尘套,java,gradle,spring-boot,Java,Gradle,Spring Boot,我是Gradle的新手,我面临一个问题(使用Gradle 2.14) 我的项目有3个子项目:组装、sprinBootProject、E2E 汇编模块负责压缩spring启动应用程序的jar以及属性文件。 E2E模块是一个“端到端”测试模块,用于测试spring boot应用程序 我在assembly/build.gradle中使用的分发插件如下: apply plugin: 'distribution' distributions { main { baseName "
汇编模块负责压缩spring启动应用程序的jar以及属性文件。
E2E模块是一个“端到端”测试模块,用于测试spring boot应用程序 我在assembly/build.gradle中使用的分发插件如下:
apply plugin: 'distribution'
distributions {
main {
baseName "project-assembly"
contents{
from project(':springBootProject').fileTree(dir: 'build/libs', include: ['*.jar'])
from project(':springBootProject').fileTree(dir: 'build/resources/main', includes: ['*.properties', 'conf/*.properties'])
}
}
}
但我需要确保springBootProject将在组装子项目之前进行评估,因此我使用dependsOn如下:
distZip.dependsOn(':springBootProject:build')
当我添加这一行时,我看到E2E模块在compileTestJava任务中失败,因此这一行影响了spring引导应用程序的生成(我认为)
E2E/build.gradle:
dependencies {
testCompile project(":springBootProject")
}
distZip.dependsOn(':springBootProject:build')
bootRepackage.mustRunAfter(':E2E:test')
所以我的问题是我做得对吗?为什么当我添加dependsOn行时,E2E模块会受到影响,我如何强制Gradle在组装模块之前评估spring boot应用程序?我明白了。
Gradle将按字母顺序评估模块因此,评估将是:assembly->E2E->springBootProject
将此行添加到assembly/build.gradle时:
dependencies {
testCompile project(":springBootProject")
}
distZip.dependsOn(':springBootProject:build')
bootRepackage.mustRunAfter(':E2E:test')
评估的顺序更改为:assembly->springBootProject->E2E
现在在“springBootProject”模块中,我使用SpringBoot插件来生成一个可执行jar,这个可执行jar是由task:springBootProject:bootRepackage生成的,它使用了由:springBootProject:jar任务生成的jar并将其转换为可执行文件
现在因为'E2E'模块依赖于'springBootProject',它将使用它的jar,但是现在这个jar是可执行的,因此我在'E2E'中有一个编译错误
因此,我必须确保“E2E”模块获得原始jar,而不是可执行jar。
所以我在springBootProject/build.gradle中添加了这一行:
dependencies {
testCompile project(":springBootProject")
}
distZip.dependsOn(':springBootProject:build')
bootRepackage.mustRunAfter(':E2E:test')
这似乎解决了问题本教程中出现了相同类型的问题: