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

6

我使用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')
}

以下是错误信息:无法为类型为org.jfrog.gradle.plugin.artifactory.dsl.ResolverConfig的对象设置未知属性'outputFileName'。

1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
9

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'
   // ....
}

4
不必使用有点丑陋的导入语句,你可以使用 tasks.resolve { } 配置任务,使用 resolve { } 配置扩展。 - Lukas Körfer
1
@LukasKörfer 你说得对,使用 Groovy DSL 可以使用这个“快捷方式”。但是在 Kotlin DSL 中,您仍然需要使用完全限定名称引用 ResolveTask(或者让我知道是否可以避免这种情况,我很感兴趣 ;))。我会根据您的评论更新我的答案,谢谢。 - M.Ricciuti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,