首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跳过非必需品的Spring Boot Gradle quickbuild

跳过非必需品的Spring Boot Gradle quickbuild
EN

Stack Overflow用户
提问于 2019-01-21 15:36:21
回答 1查看 1K关注 0票数 0

这里是Java 8和Gradle 4.6。我有一个带有以下build.gradle的Spring应用程序

代码语言:javascript
复制
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

这是一个Spring应用程序,它也使用格子式雅可科 Gradle插件。

我认为“完整构建”是一种调用,即:

  • 编撰
  • 运行Checkstyle
  • 运行单元测试(JUnit)
  • 运行Jacoco进行代码覆盖率分析。
  • 使用Spring的库构建一个"fat“(自包含)可执行jar

对于当前的Gradle构建文件,我运行一个完整的构建,如下所示:

代码语言:javascript
复制
./gradlew clean build

然而,这可能需要几分钟的时间来运行所有的单元测试,并且变得很麻烦。我想介绍一个“快速构建”选项,它只编译代码并为我创建Spring。这将极大地加快开发时间。

我希望像这样调用快速构建:

代码语言:javascript
复制
./gradlew clean quickbuild

到目前为止我已经知道了:

代码语言:javascript
复制
tasks.register("quickbuild") { 
    doLast { 
        // ???
    }
}

但是不知道如何将编译和fatjar任务链接到它(更重要的是,跳过我不想要的所有其他东西!)关于我错过了什么有什么想法吗?

更新

bootJar任务似乎不存在或没有配置(请查看上面提供的build.gradle文件!):

代码语言:javascript
复制
$ ./gradlew clean bootJar

FAILURE: Build failed with an exception.

* What went wrong:
Task 'bootJar' not found in root project 'myapp'. Some candidates are: 'bootRun'.

* Try:
Run gradlew tasks to get a list of available tasks. Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s

当我尝试运行bootRun

代码语言:javascript
复制
$ ./gradlew clean bootRun

它试图真正运行我的应用程序!这不是我想要的!我只想编译和构建胖罐子!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-21 16:03:44

参见这里的Java插件的文档:任务

您可以创建一个新任务(quickbuild)并使其依赖于所需的任务(在您的示例中,我猜它可能是assemble生命周期任务,也可能是bootJar任务(对于SpringBoot v2.x)或bootRepackage (对于SpringBoot v1.5.x) )。

代码语言:javascript
复制
tasks.register('quickbuild'){
    dependsOn assemble
}

但是,如果quickbuild任务的唯一目的是触发Jar的创建,那么最简单的解决方案就是直接执行assemble

代码语言:javascript
复制
./gradlew clean assemble
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54293205

复制
相关文章

相似问题

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