【问题标题】:Depend on dynamically generated gradle project依赖动态生成的gradle项目
【发布时间】:2016-11-02 08:43:47
【问题描述】:

我有一个多模块 gradle 项目,如下所示

books
  books-api
  books-server
  books-tests
  books-client   // generated using 'gradle swagger'

books-api 包含我想使用 Swagger codegen gradle 插件生成基于 Java 的客户端的 service.swagger.json 文件。 books-test 模块是一个测试套件,它将使用生成的客户端在服务器上运行测试。

Swagger codegen gradle 插件创建了一个完整的 gradle 模块books-client。目前,该模块是通过在根项目上运行swagger 任务生成的。在根项目上运行gradle build 之前,我必须手动执行此步骤,以便满足books-test 模块对books-client 的依赖。

是否有生成books-client 并让books-test 依赖它来仅在根项目上运行gradle build? IE。 gradle build 将生成 books-client 并成功构建 books-test

【问题讨论】:

    标签: java gradle swagger


    【解决方案1】:

    为什么要动态创建整个 gradle 模块?还是您的意思是您只是动态创建模块的源代码?

    我建议您不要动态创建 gradle 模块,而是将其与所有必要的依赖项放在一起,然后让 swagger 插件生成代码。据我在插件中看到的,swagger 任务无论如何都在 compileJava 之前。

    所以我建议的工作流程是你有 gradle 模块,然后使用标准的 gradle 构建工作流程。还是您在使用这种方法时遇到了问题?

    【讨论】:

    • 更改 API 应该会创建一个新客户端。我们不希望客户端代码变得陈旧,因为它需要手动步骤。当有人签出 repo 并构建它时,一切都应该正常工作。
    • 我明白了(这当然是有道理的)。我不明白为什么您需要创建整个模块而不仅仅是需要生成的客户端。还是您已经这样做了,我误解了您的问题?因为我有一个类似的项目,但我是从一个 swagger 规范创建 API 代码,这在构建过程中没有问题。
    • 它对我来说似乎并不完美。如果我不生成支持文件,则生成的源似乎缺少一些 Java 文件。如果我确实生成了支持文件,它将生成整个 gradle 模块。我不想花时间调整生成的源代码,所以使用生成的 gradle 模块似乎是最好的选择。
    猜你喜欢
    • 1970-01-01
    • 2013-01-30
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    相关资源
    最近更新 更多