【发布时间】: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