Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle-两个插件具有相同的根块名称,可以解决冲突_Gradle_Build.gradle_Gradle Plugin - Fatal编程技术网

Gradle-两个插件具有相同的根块名称,可以解决冲突

Gradle-两个插件具有相同的根块名称,可以解决冲突,gradle,build.gradle,gradle-plugin,Gradle,Build.gradle,Gradle Plugin,我正在尝试使用两个不同的插件,它们具有相同的根块名称,是什么导致了构建过程中的冲突和错误 这两个插件在build.gradle中定义: plugins { id 'java' id 'application' id 'com.benjaminsproule.swagger' version '1.0.8' id 'org.detoeuf.swagger-codegen' version '1.7.4' } apply plugin: 'org.detoeuf.swagger-co

我正在尝试使用两个不同的插件,它们具有相同的根块名称,是什么导致了构建过程中的冲突和错误

这两个插件在build.gradle中定义:

plugins {
  id 'java'
  id 'application'
  id 'com.benjaminsproule.swagger' version '1.0.8'
  id 'org.detoeuf.swagger-codegen' version '1.7.4'
}
apply plugin: 'org.detoeuf.swagger-codegen'

version '1.0-SNAPSHOT'
mainClassName = 'ServiceMain'

swagger {
    apiSource {
        springmvc = true
        locations = ['com.google.charger']
        schemes = ['https']
        info {
            title = 'Swagger Gradle Plugin Sample'
            version = 'v1'
        }
        swaggerDirectory = 'swagger'
        swaggerFileName = 'charger-service-api-swagger'
        attachSwaggerArtifact = true
    }
}

swagger {
    inputSpec = "${project.projectDir}/swagger/charger-service-api-swagger.json"
    outputDir = file("${project.projectDir}/../charger-server-api-client/")
    lang = 'java'

    additionalProperties = [
            'invokerPackage'         : 'com.google.ev.charger.server',
            'modelPackage'           : 'com.google.ev.charger.server.model',
            'apiPackage'             : 'com.google.ev.charger.server.api',
            'dateLibrary'            : 'joda',
            'groupId'                : 'com.google.ev',
            'artifactId'             : 'charger.server',
            'artifactVersion'        : '1.0.0',
            'hideGenerationTimestamp': 'true'
    ]
}

sourceSets {
    swagger {
        java {
            srcDir file("${project.buildDir.path}/swagger/src/main/java")
        }
    }
}
正如您所看到的,两个插件都以相同的块名开始(swagger),
有没有办法为每个配置指定插件?

我最后用代码解决了这个问题, 我正在使用一个名为“CreateSwagger”的属性(从CLI或从gradle.properties文件)来分隔这两个场景

我遇到的问题是,plugins{}块不允许在if中使用,因为它会评估条件,所以我需要使用“旧”遗留插件“apply plugin:

这就是我的build.gradle最终的样子:

buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "com.benjaminsproule:swagger-gradle-plugin:1.0.8"
        classpath "gradle.plugin.org.detoeuf:swagger-codegen-plugin:1.7.4"
    }
}

plugins {
    id 'java'
    id 'application'
    id 'maven'
}

if(project.properties.containsKey('CreateSwagger')){
    apply plugin: "com.benjaminsproule.swagger"
} else {
    apply plugin: 'org.detoeuf.swagger-codegen'
}

version '1.0-SNAPSHOT'
mainClassName = 'EVChargerRestServiceMain'

if(project.properties.containsKey('CreateSwagger')){
    swagger {
        apiSource {
            springmvc = true
            locations = ['com.google.charger']
            schemes = ['https']
            info {
                title = 'Swagger Gradle Plugin Sample'
                version = 'v1'
            }
            swaggerDirectory = 'swagger'
            swaggerFileName = 'charger-service-api-swagger'
            attachSwaggerArtifact = true
        }
    }
}
else {
    swagger {
        inputSpec = "${project.projectDir}/swagger/charger-service-api-swagger.json"
        outputDir = file("${project.projectDir}/../charger-server-api-client/")
        lang = 'java'

        additionalProperties = [
                'invokerPackage'         : 'com.google.ev.charger.server',
                'modelPackage'           : 'com.google.ev.charger.server.model',
                'apiPackage'             : 'com.google.ev.charger.server.api',
                'dateLibrary'            : 'joda',
                'groupId'                : 'com.google.ev',
                'artifactId'             : 'charger.server',
                'artifactVersion'        : '1.0.0',
                'hideGenerationTimestamp': 'true'
        ]
    }
}