【问题标题】:Howto handle clash of tasks for two gradle plugins?如何处理两个 gradle 插件的任务冲突?
【发布时间】:2020-06-26 05:47:46
【问题描述】:

我将 gradle 与 com.jfrog.artifactoryio.swagger.core.v3.swagger-gradle-plugin 两个插件一起使用。

现在我想配置这里描述的https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-gradle-plugin 的生成代码。但似乎 resolve 任务已经从 artifactory 中定义了。如何直接解决swagger-plugin的方法?

这是在我的 build.gradle 中:

resolve {
   outputFileName = 'bananas'
   outputFileName = 'PetStoreAPI'
   outputFormat = 'JSON'
   prettyPrint = 'TRUE'
   classpath = sourceSets.main.runtimeClasspath
   resourcePackages = ['io.test']
   outputDir = file('test')
}

这是错误消息:Could not set unknown property 'outputFileName' for object of type org.jfrog.gradle.plugin.artifactory.dsl.ResolverConfig.

【问题讨论】:

    标签: gradle swagger build.gradle artifactory gradle-plugin


    【解决方案1】:

    Artifactory resolve 扩展和 Swagger 插件 resolve 任务(import io.swagger.v3.plugins.gradle.tasks.ResolveTask 类型)之间确实存在冲突

    解决此问题的一种方法是使用完全限定名称显式引用 swagger 任务,如下所示:

    io.swagger.v3.plugins.gradle.tasks.ResolveTask swaggerResolve = tasks.getByName("resolve")
    swaggerResolve.configure {
        outputFileName = 'PetStoreAPI'
        outputFormat = 'JSON'
        prettyPrint = 'TRUE'
        classpath = sourceSets.main.runtimeClasspath
        resourcePackages = ['io.test']
        outputDir = file('test')
    }
    

    编辑 更简单的解决方案,请参阅 Lukas 的评论

    tasks.resolve { 
       outputFileName = 'PetStoreAPI'
       // ....
    }
    

    【讨论】:

    • 不需要(有点丑)导入。您可以只使用tasks.resolve { } 来配置任务,使用resolve { } 来配置扩展。
    • @LukasKörfer 你是对的,使用 Groovy DSL 你可以使用这个“快捷方式”。使用 Kotlin DSL,您仍然需要使用其完全限定的名称来引用 ResolveTask(或者让我知道我们是否可以避免这种情况,我很感兴趣;))。我会用你的评论更新我的答案,tks。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 2023-03-22
    • 2011-06-26
    • 1970-01-01
    相关资源
    最近更新 更多