如何处理两个 gradle 插件的任务冲突?

Ehm*_*Kah 6 artifactory gradle swagger build.gradle gradle-plugin

我将 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')
}
Run Code Online (Sandbox Code Playgroud)

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

M.R*_*uti 9

resolveArtifactory扩展和 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')
}
Run Code Online (Sandbox Code Playgroud)

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

tasks.resolve { 
   outputFileName = 'PetStoreAPI'
   // ....
}
Run Code Online (Sandbox Code Playgroud)

  • (有点难看)导入是没有必要的。您只需使用“tasks.resolve { }”来配置任务,并使用“resolve { }”来配置扩展。 (4认同)