Gradle这篇文章就够用了11Gradle与CI/CD插件集成

编程

buildscript {

ext {

springBootVersion = "2.1.1.RELEASE"

}

repositories {

mavenCentral()

}

dependencies {

classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")

}

}

apply plugin: "java"

apply plugin: "org.springframework.boot"

apply plugin: "io.spring.dependency-management"

group = "com.orrincn"

version = "0.0.1-SNAPSHOT"

sourceCompatibility = 1.8

repositories {

mavenCentral()

}

dependencies {

implementation("org.springframework.boot:spring-boot-starter-web")

testImplementation("org.springframework.boot:spring-boot-starter-test")

}

可以看到,执行gradle test生成了一个reports的目录,测试执行结果的报告信息在此目录中保存,只通过index.html即可确认结果。

结合Jacoco进行覆盖率确认

Jacoco是Java Code Coverage Library的缩写,它是用于确认java应用单体测试覆盖率的有效工具,最重要的一个前提是需要有测试用例,所以本文是在前面的基础之上的,关于如何使用gradle进行spring boot的单体测试这里不再赘述。

  • 添加Jacoco的plugin

apply plugin: ‘jacoco’

  • 添加使用设定

    后面会给出同样方式使用maven和jacoco的方法,从直观的感受来说gradle写的更加人性化一些,从如下可以读出,jacoco的相关结果的报告是以html方式生成。当然根据需要还可以加上check.dependsOn jacocoTestReport的依赖,这样使用gradle build可以直接生成结果,较为方便。

acocoTestReport {

reports {

xml.enabled false

html.enabled true

}

}

  • build.gradle

    添加了上述内容的build.gradle为:

buildscript {

ext {

springBootVersion = "2.1.1.RELEASE"

}

repositories {

mavenCentral()

}

dependencies {

classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")

}

}

apply plugin: "java"

apply plugin: "jacoco"

apply plugin: "org.springframework.boot"

apply plugin: "io.spring.dependency-management"

group = "com.orrincn"

version = "0.0.1-SNAPSHOT"

sourceCompatibility = 1.8

repositories {

mavenCentral()

}

dependencies {

implementation("org.springframework.boot:spring-boot-starter-web")

testImplementation("org.springframework.boot:spring-boot-starter-test")

}

jacocoTestReport {

reports {

xml.enabled false

html.enabled true

}

}

check.dependsOn jacocoTestReport

上述gradle build执行的时候实际是执行了jacoco插件的jacocoTestReport任务,其生成的方式应该是html的,位置位于build/reports/jacoco。

结合Sonarqube进行代码审查

gradle的sonarqube插件

gradle中的sonarqube的插件是org.sonarqube,用来在gradle中调用sonarqube进行代码质量分析。详细介绍请参看:sonarqube

使用方式

  • 指定plugin

    在build.gradle中添加如下插件版本信息

plugins {

id "org.sonarqube" version "2.6.2"

}

  • 添加apply plugin信息

apply plugin: "org.sonarqube"

  • sonarqube设定信息

    最简单的需求的情况下,非多工程项目做以上配置即可,接下来就是传递给gradle所需要的sonarqube的详细信息,而这些可以通过property的方式传入,详细的使用方式在前面的基础中都已介绍,此处不再赘述,主要设定的内容为:

    • URL:systemProp.sonar.host.url=http://localhost:32003
    • 用户名:systemProp.sonar.login=admin
    • 密码:systemProp.sonar.password=admin

设定方式可以使用如下方式:

sonarqube {

properties {

property "sonar.host.url", "http://localhost:32003"

property "sonar.login", "admin"

property "sonar.password", "admin"

}

}

  • build.gradle详细信息

buildscript {

ext {

springBootVersion = "2.1.1.RELEASE"

}

repositories {

mavenCentral()

}

dependencies {

classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")

}

}

plugins {

id "org.sonarqube" version "2.6.2"

}

sonarqube {

properties {

property "sonar.host.url", "http://localhost:32003"

property "sonar.login", "admin"

property "sonar.password", "admin"

}

}

apply plugin: "java"

apply plugin: "jacoco"

apply plugin: "org.sonarqube"

apply plugin: "org.springframework.boot"

apply plugin: "io.spring.dependency-management"

group = "com.orrincn"

version = "0.0.1-SNAPSHOT"

sourceCompatibility = 1.8

repositories {

mavenCentral()

}

dependencies {

implementation("org.springframework.boot:spring-boot-starter-web")

testImplementation("org.springframework.boot:spring-boot-starter-test")

}

jacocoTestReport {

reports {

xml.enabled false

html.enabled true

}

}

check.dependsOn jacocoTestReport

  • 扫描方式

    可以使用gradle sonarqube即可进行扫描

orrincn:springboot orrin$ gradle sonarqube

> Task :sonarqube

SCM provider autodetection failed. No SCM provider claims to support this project. Please use sonar.scm.provider to define SCM of your project.

Class not found: javax.annotation.Nonnull

Class not found: javax.annotation.meta.When

Class not found: javax.annotation.meta.TypeQualifierNickname

Class not found: org.junit.jupiter.api.extension.ExtendWith

BUILD SUCCESSFUL in 6s

5 actionable tasks: 1 executed, 4 up-to-date

orrincn:springboot orrin$

以上是 Gradle这篇文章就够用了11Gradle与CI/CD插件集成 的全部内容, 来源链接: utcz.com/z/515149.html

回到顶部