Java Spring Boot Gradle quickbuild跳过了非基本功能
这里是Java8和Gradle4.6。我有一个Spring Boot应用程序,具有以下Java Spring Boot Gradle quickbuild跳过了非基本功能,java,spring-boot,gradle,Java,Spring Boot,Gradle,这里是Java8和Gradle4.6。我有一个Spring Boot应用程序,具有以下build.gradle: buildscript { repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.8.RELEASE") } } plugins { id
build.gradle
:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.8.RELEASE")
}
}
plugins {
id 'java-library'
id 'checkstyle'
id 'jacoco'
}
apply plugin: 'org.springframework.boot'
repositories {
mavenLocal()
mavenCentral()
jcenter()
}
configurations {
dev
}
dependencies {
compile(
,'ch.qos.logback:logback-classic:1.2.3'
,'org.slf4j:jul-to-slf4j:1.7.25'
,'org.apache.logging.log4j:log4j-to-slf4j:2.9.1'
,'org.apache.commons:commons-lang3:3.7'
,'org.springframework.boot:spring-boot-starter-actuator'
,'org.apache.commons:commons-text:1.2'
,'commons-beanutils:commons-beanutils-core:1.8.3'
)
testCompile(
'junit:junit:4.12'
,'org.mockito:mockito-core:2.23.0'
)
dev('org.springframework.boot:spring-boot-devtools')
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
String buildName = 'myapp'
jar {
baseName = buildName
}
bootRun {
if(project.hasProperty('debugMode')) {
jvmArgs = [ "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" ]
}
classpath = sourceSets.main.runtimeClasspath + configurations.dev
}
checkstyle {
toolVersion = '8.12'
ignoreFailures = false
}
jacocoTestReport {
reports {
xml.enabled false
html.enabled true
html.destination file("${buildDir}/reports/jacoco/")
}
}
check.dependsOn jacocoTestCoverageVerification
jacocoTestCoverageVerification.dependsOn jacocoTestReport
这是一个SpringBootJava应用程序,它也使用了和Gradle插件
我认为一个“完全构建”是一个调用:
- 汇编
- 运行支票样式
- 运行单元测试(JUnit)
- 运行Jacoco进行代码覆盖率分析
- 使用SpringBoot的库构建一个“fat”(自包含)可执行jar
./gradlew clean build
./gradlew clean quickbuild
然而,这可能需要几分钟来运行所有的单元测试,并且变得很麻烦。我想介绍一个
“快速构建”选项,它只编译代码并为我创建SpringBoot胖jar。这将有助于加快发展
时间非常宝贵
我希望像这样调用快速构建:
./gradlew clean build
./gradlew clean quickbuild
到目前为止,我得到了这个:
tasks.register("quickbuild") {
doLast {
// ???
}
}
但不知道如何将编译和fatjar任务链接到它(更重要的是,跳过所有其他我不想要的东西!)关于我遗漏了什么有什么想法吗?
使现代化
bootJar
任务似乎不存在或未配置(请检查上面提供的我的build.gradle
文件!):
当我尝试运行bootRun
时:
$ ./gradlew clean bootRun
它试图实际运行我的应用程序!那不是我想要的!我只想编译和构建胖罐子 请参见以下Java插件中的文档: 您可以创建一个新任务(
quickbuild
),并使其依赖于所需的任务(在您的情况下,我想它可能是assembly
生命周期任务,或者可能是bootJar
任务(对于SpringBoot v2.x)或bootRepackage
(对于SpringBoot v1.5.x))
但是,如果quickbuild
任务的唯一目的是触发Jar的创建,那么最简单的解决方案是直接执行assemble
./gradlew clean assemble
(此处为Gradle 5)我在我的环境中尝试了
Gradle bootJar
,但它不运行测试或相关内容。感谢@jingx(+1)请查看我上面关于bootJar
的更新,但它似乎不适用于我给定的Gradle配置!谢谢@M.Ricciuti(+1)assembly调用bootJar
(或者Spring Boot在引擎盖下做的任何事情来创建胖罐子)?还是assemble
调用Gradle自己的内置胖罐机制?我问这个问题是因为对我来说非常重要的是,通过运行/gradlew clean build
调用的任何Spring Boot fat jar构建相关任务也会在这个“快速构建”过程中被调用!再次感谢!是的,当应用SpringBoot插件时,它会创建bootJar
任务,并自动配置assembly
任务以依赖它。它还默认禁用jar`任务。您可以在Spring Boot plugin doc中找到一些详细信息:谢谢@M.Ricciuti(+1)请参阅我上面关于bootJar
的更新,但它似乎不适用于我给定的Gradle配置!抱歉,我错过了您使用SpringBoot v1.5.8的事实(我使用的是最新版本2.1.x):在v1.5.x中,SpringBoot插件有点不同,没有bootJar
任务,而是bootRepackage
任务:请参阅与您的版本相关的文档:。想法是一样的:assemble
任务被配置为依赖于bootRepackage
=>您可以直接执行/gradlew clean bootRepackage