Java 8 и Gradle 4.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
Так что это Java-приложение Spring Boot, которое также использует Checkstyle и Jacoco Плагины Gradle.
Я считаю " полная сборка " вызовом, который:
- компилировать
- Запускает Checkstyle
- Запуск юнит-тестов (JUnit)
- Запускает Jacoco для анализа покрытия кода
- Использует библиотеки Spring Boot для создания "толстого" (автономного) исполняемого файла jar
Учитывая мой текущий файл сборки Gradle, я запускаю полную сборку так:
./gradlew clean build
Однако это может занять несколько минут, чтобы пройти все юнит-тесты и стало громоздким. Я хотел бы представить
Опция " quick build ", которая только компилирует код и создает для меня толстую банку Spring Boot. Это поможет ускорить разработку
время потрясающе.
Я надеюсь вызвать быструю сборку следующим образом:
./gradlew clean quickbuild
Пока у меня есть это:
tasks.register("quickbuild") {
doLast {
// ???
}
}
Но не уверен, как связать с ним задачи компиляции и fatjar (и, что более важно, пропустить все остальные вещи, которые мне не нужны!). Есть идеи, что мне не хватает?
Обновление
Задача bootJar
, кажется, не существует или не настроена (пожалуйста, проверьте мой build.gradle
файл, предоставленный выше!):
$ ./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
:
$ ./gradlew clean bootRun
Он пытается на самом деле запустить мое приложение! Это не то, что я хочу! Я просто хочу скомпилировать и собрать полную флягу!