【问题标题】:How to configure IDEA for separated subproject dependency with gradle如何使用 gradle 为分离的子项目依赖配置 IDEA
【发布时间】:2019-07-18 01:20:21
【问题描述】:

我有一个特殊的项目结构:

root project
    + sub project 1
    + sub project 2

子项目代表“插件”:应用程序的一部分内置在单独的 jar 中,并在部署时由根项目在运行时动态扫描。 (可能会有额外的子项目添加到部署中,单独开发。)另一个转折是子项目依赖于(编译,或更准确地说是编辑时间)根项目(根项目包含一个 DSL,子项目在此定义脚本DSL,因此只有语法和文本帮助才需要依赖)。

在 gradle 构建中,我有一个发布和部署任务,其中包括所有三个项目的构建结果(jar)到一个要部署的 zip 中。因此,作为独立应用,它运行良好。

但是,当我尝试运行 root 项目时,它无法访问子项目的 jar,因为为避免循环引用,我无法使 root 依赖于子项目。

让应用在 IDEA 中运行时构建、运行和检测插件,同时保持 gradle 级别的松散耦合的最佳做法是什么?

我的一些想法:

1) 以某种方式扩展或配置根项目的 gradle 脚本的构建任务以依赖并包含子项目。 (我可以不建立循环引用吗?)

2) 以某种方式向 IDEA 项目添加额外的项目配置。是否可以在不删除每个 gradle 脚本重新解析的情况下完成?

3) 使IDEA在运行环境中包含子项目的构建结果。

有最佳实践吗?

【问题讨论】:

    标签: gradle intellij-idea gradle-kotlin-dsl


    【解决方案1】:

    嗯,我想出了一个解决办法。

    首先,我创建了一个新的core 子项目,并将根项目的所有源代码移入其中。 (为了完全准确,我将 main 函数保留在根目录中。)

    root project
        + core
        + sub project 1 (plugin)
        + sub project 2 (plugin)
    

    根项目依赖于core 和附加的plugin 项目,所以无论是我从IDEA 运行它,还是构建版本时,它都会完成。

    另一方面,插件现在可能依赖core,不会有循环依赖。

    我遇到的另一个问题:虽然我的插件项目只有资源源目录,但要启用来自 core 的 DSL 作为脚本中的上下文帮助,我还必须创建一个空的 kotlin 源目录。 (这可能是按惯例配置的东西。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 2012-09-24
      相关资源
      最近更新 更多