Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring Boot Gradle quickbuild跳过了非基本功能_Java_Spring Boot_Gradle - Fatal编程技术网

Java Spring Boot Gradle quickbuild跳过了非基本功能

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

这里是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 '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
根据我当前的Gradle构建文件,我运行完整的构建,如下所示:

./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