首页 > 解决方案 > 无法在我的 gradle 项目中添加 google java 格式插件

问题描述

我正在尝试将 google java 格式插件集成到我的 gradle 项目中。我正在按照https://github.com/google/google-java-format的 README.md 文件中的说明进行操作。

我将依赖项添加为

apply plugin: 'com.github.sherter.google-java-format'

但是当我尝试构建项目时,它会引发以下异常的错误

org.gradle.api.GradleScriptException: A problem occurred evaluating root project 'caspian'.
    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:93)
    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl$2.run(DefaultScriptPluginFactory.java:237)
    at org.gradle.configuration.ProjectScriptTarget.addConfiguration(ProjectScriptTarget.java:77)
    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:242)
    at org.gradle.configuration.BuildOperationScriptPlugin$1$1.run(BuildOperationScriptPlugin.java:69)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
    at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
    at org.gradle.configuration.BuildOperationScriptPlugin$1.execute(BuildOperationScriptPlugin.java:66)
    at org.gradle.configuration.BuildOperationScriptPlugin$1.execute(BuildOperationScriptPlugin.java:63)
    at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.apply(DefaultUserCodeApplicationContext.java:49)
    at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperationScriptPlugin.java:63)
    at org.gradle.configuration.project.BuildScriptProcessor$1.run(BuildScriptProcessor.java:45)
    at org.gradle.internal.Factories$1.create(Factories.java:26)

Caused by: org.gradle.api.plugins.UnknownPluginException: Plugin with id 'com.github.sherter.google-java-format' not found.
    at org.gradle.api.internal.plugins.DefaultPluginManager.apply(DefaultPluginManager.java:134)
    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyType(DefaultObjectConfigurationAction.java:160)
    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$200(DefaultObjectConfigurationAction.java:42)
    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$3.run(DefaultObjectConfigurationAction.java:97)
    at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:183)
    at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPluginAware.java:49)
    at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:483)
    at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:195)
    at org.gradle.internal.metaobject.CompositeDynamicObject.tryInvokeMethod(CompositeDynamicObject.java:98)
    at org.gradle.internal.extensibility.MixInClosurePropertiesAsMethodsDynamicObject.tryInvokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:34)
    at org.gradle.internal.metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:56)
    at build_7i564zkddarhfycxz0bgfbyfd$_run_closure1.doCall(/Users/zop5486/ProjectsGithub/enterprise-customer-caspian/build.gradle:83)
    at org.gradle.util.ClosureBackedAction.execute(ClosureBackedAction.java:71)
    at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:154)
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:105)
    at org.gradle.util.ConfigureUtil$WrappedConfigureAction.execute(ConfigureUtil.java:166)
    at org.gradle.api.internal.DefaultMutationGuard$2.execute(DefaultMutationGuard.java:42)

我已将 mavenCentral() 添加到我的存储库中,但仍然出现此错误。我无法调试我收到此错误的原因。

我的 build.gradle 文件看起来像这样

def name = "cApp"
buildscript {
  ext {
    springBootVersion = '2.3.0.RELEASE'
    sonarqubeVersion = '2.7.1'
    gradleOSpackage = '1.9.4'
    jfrogVersion = '2.2.4'
    asciidoctorVersion = '1.5.8.1'
  }  
  repositories {
    mavenLocal()
      mavenCentral()

  dependencies {
    classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
    classpath "com.netflix.nebula:gradle-ospackage-plugin:${gradleOSpackage}"
    classpath "org.jfrog.buildinfo:build-info-extractor-gradle:${jfrogVersion}"
    classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:${sonarqubeVersion}"
    classpath "org.asciidoctor:asciidoctor-gradle-plugin:${asciidoctorVersion}"
  }
}

group = 'com.amam.cxp.app'
version = '1.0.0'

allprojects{

    if(name == 'components'){
    return
    }
    
    ext {         
        lombokVersion = '1.18.10'
        viperVersion = '2020.51.0-SNAPSHOT'
        eventVersion = '1.0.2'
        modelMapperVersion = '2.3.0'
        kafkaClientVersion = '3.5.8'
        kafkaAvroSerializerVersion = '5.4.0'
        springKafkaVersion = '2.3.7.RELEASE'
        springRetryVersion = '1.2.3.RELEASE'
        springAspectsVersion = '5.2.3.RELEASE'
        echoclientVersion = '1.5.1'
        fasterxmlVersion = '1.2.0'
        httpclient = '4.5.3'
        activemqBroker = '5.15.8'
        jacksonVersion = '2.10.4'
        commonsLang3Version = '3.0'
        checkstyleVersion = '8.28'
        jacocoToolVersion = '0.8.5'
        confluentVersion = '5.3.0'
        personEventVersion = '1.0.1'
        compositeEventVersion ='0.2.3'
        powerMockCoreVersion ='2.0.0-RC.4'
        powermockApiMockito2Version = '2.0.0-beta.5'
        powermockModuleJunit4Version = '2.0.0-beta.5'
        applicationDefaultJvmArgs = [ '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=11501' ]
        vertexMicrometerVersion = '3.9.3'
        micrometerAzureMonitorVersion = '1.1.0'
        micrometerCoreVerison = '1.5.4'
        promethuesVersion = "1.5.4"
    }
    
    repositories {
      mavenLocal()
        mavenCentral()

    }

    apply plugin: 'java'
    apply plugin: 'artifactory'
    apply plugin: 'checkstyle'
    apply plugin: 'io.spring.dependency-management'
    apply plugin: 'org.springframework.boot'    
    apply plugin: 'pmd'
    apply plugin: 'com.github.sherter.google-java-format'

    checkstyle {
      toolVersion = "${checkstyleVersion}"
      System.setProperty("checkstyle.suppression.file", String.format("%s/%s", rootDir, "checkstyle/checkstyle-suppressions.xml"))
      configFile = new File(rootDir, "checkstyle/checkstyle.xml")
      System.setProperty("checkstyle.cache.file", String.format("%s/%s", buildDir,
          "checkstyle.cachefile"))
      ignoreFailures = false
      showViolations = true
    }

    
    pmd {
      sourceSets = [sourceSets.main]
      ignoreFailures = true
      rulePriority = 5
      ruleSets = ["java-basic",
                  "java-braces",
                  "java-clone",
                  "java-codesize",
                  "java-controversial",
                  "java-coupling",
                  "java-design",
                  "java-empty",
                  "java-finalizers",
                  "java-imports",
                  "java-naming",
                  "java-optimizations",
                  "java-strings",
                  "java-sunsecure",
                  "java-unnecessary",
                  "java-unusedcode"]
    }
    
    apply plugin: 'jacoco'
    
    jacoco {
        toolVersion = "${jacocoToolVersion}"
    }
}

    
task jacocoMergeAll(type: JacocoMerge) {
    dependsOn(subprojects.test)
    executionData fileTree(project.rootDir.absolutePath).include("**/build/jacoco/*.exec")
}
    
task jacocoRootReport(type: JacocoReport, group: 'Coverage reports') {
  description = 'Generates an aggregate report from all projects'
  dependsOn(jacocoMergeAll)

  additionalSourceDirs.from =
                   files(allprojects.sourceSets.main.allSource.srcDirs)
  sourceDirectories.from =
                   files(allprojects.sourceSets.main.allSource.srcDirs)
  classDirectories.from =
                   files(allprojects.sourceSets.main.output)
  executionData.from =
                   files("${buildDir}/jacoco/jacocoMergeAll.exec")
  reports {
    html.enabled = true
    xml.enabled = true
  }

  afterEvaluate {
        classDirectories.setFrom(files(classDirectories.files.collect {
            fileTree(dir: it,
                    exclude: [  '**/**Properties.**'
                    ]
            )
        }))
    }
}
    
jacocoTestCoverageVerification {
  violationRules {
    rule {
      limit {
        minimum = 0.10
      }
    }
  }
}
    
check.dependsOn jacocoTestCoverageVerification
    
test {
  testLogging {
  afterSuite { desc, result ->
  if (!desc.parent) {
    println "Unit Test Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} successes, ${result.failedTestCount} failures, ${result.skippedTestCount} skipped)"
   }  
  }
}

jacoco {
  destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
  classDumpDir = file("$buildDir/jacoco/classpathdumps")
 }
 finalizedBy jacocoRootReport
}


subprojects{
    bootJar {
        enabled = false
    }
    
    jar {
        enabled = true
    }
}

bootJar {
        enabled = true
}

jar {
    enabled = false
}

task('createVersion') {
  def outputFile = file('src/main/resources/build.properties')
  def versionNumber = 'git rev-list -n1 HEAD'.execute().getText()
  outputs.file outputFile
  doLast {
    outputFile.write 'buildVcsNumber='
    outputFile.append(versionNumber)
  }
}

build.dependsOn createVersion

dependencies {
  compile(
      "com.fasterxml:classmate:${fasterxmlVersion}",
      "org.springframework.boot:spring-boot-starter-web",
      "org.springframework.boot:spring-boot-starter-actuator",
      "org.apache.httpcomponents:httpclient:${httpclient}",
      project(':components:publisher'),
      project(':components:transformer'),
      project(':components:subscriber')
  )

  implementation(
            "net.logstash.logback:logstash-logback-encoder:6.6"
  )
  testImplementation(
      "org.springframework.boot:spring-boot-starter-test",
      "org.apache.activemq:activemq-broker:${activemqBroker}"
  )
}

bootJar {
  version = null
  baseName = "${name}"
}


tasks.withType(Checkstyle) {
  exclude '**//Application.java'
}

标签: gradlegradle-plugingoogle-java-format

解决方案


推荐阅读