我是Gradle的新手,但实际上很难从Maven切换。
我尝试按照this guide将Google格式化程序添加到我的构建中。
理想情况下,我想检查每次有人运行gradle build时代码是否格式正确。我尝试过以下策略。它运作得不好。这看起来像一个设计良好的gradle文件,我怎样才能让这个google格式化程序与它一起使用?
buildscript {
ext {
springBootVersion = '2.0.1.RELEASE'
}
repositories {
mavenCentral()
jcenter()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
classpath "gradle.plugin.com.github.sherter.google-java-format:google-java-format-gradle-plugin:0.6"
}
}
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'maven'
apply plugin: 'com.github.sherter.google-java-format'
group = 'com.remindful'
version = '1.0.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-jersey')
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-web-services')
compile('org.springframework.boot:spring-boot-starter-websocket')
compile('org.springframework.session:spring-session-core')
compile("org.springframework.boot:spring-boot-starter-data-jpa:1.3.5.RELEASE")
compile("com.h2database:h2:1.4.191")
compile group: 'com.h2database', name: 'h2', version: '1.4.197'
testCompile 'junit:junit:4.12'
testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.0.1.RELEASE'
}
task format(type: GoogleJavaFormat) {
source 'src/main'
source 'src/test'
include '**/*.java'
exclude '**/*Template.java'
}
task verifyFormatting(type: VerifyGoogleJavaFormat) {
source 'src/main'
include '**/*.java'
ignoreFailures true
}
// To force debug on application boot, switch suspend to y
bootRun {
systemProperties System.properties
jvmArgs=["-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"]
}
答案 0 :(得分:0)
您已定义了相应的任务 - format
和verifyFormatting
- 但您尚未将它们合并到构建中。所以,你应该能够运行
./gradlew format
和
./gradlew verifyFormatting
但./gradlew build
不会对其进行任何格式化或验证。
您需要决定的第一件事是您希望运行这些任务。我会将format
作为手动步骤,即有人应该明确地运行该任务以格式化他们的代码。在这种情况下,您什么都不做,因为./gradlew format
应该已经有用了。
另一方面,verifyFormatting
应始终运行以进行完整构建。 Maven让您将这些任务附加到特定的阶段,但这不是Gradle使用的模型。相反,它适用于任务图,其中任务彼此依赖。您的目标是在适当的位置将verifyFormatting
任务插入该图表中。
鉴于此,第二件事是将verifyFormatting
附加到适当的任务。这取决于您的要求,但在此特定情况下,我建议Base Plugin提供的check
任务。这个插件由Java插件和许多其他插件自动应用,因此它通常可用。
check
任务已取决于test
任务,因此它是完美的地方。只需将其添加到您的构建脚本:
task verifyFormatting(...) {
...
}
check.dependsOn verifyFormatting
请注意,build
任务已取决于check
,因此./gradlew build
现在也会运行verifyFormatting
。