gpt4 book ai didi

gradle - 如何使用Gradle为单独的子项目依赖项配置IDEA

转载 作者:行者123 更新时间:2023-12-03 05:37:48 47 4
gpt4 key购买 nike

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

root project
+ sub project 1
+ sub project 2

子项目代表“插件”:应用程序的一部分内置到单独的jar中,并在部署时由根项目在运行时动态扫描。 (可能还会向部署中添加其他子项目,这些子项目是单独开发的。)另一个问题是子项目取决于(编译,或更准确地说是编辑时间)根项目(根项目包含DSL,并且子项目为此定义了脚本) DSL,因此仅语法和共文本帮助才需要依赖项。

在gradle构建中,我有一个发布和部署任务,该任务将所有三个项目的构建结果(jar)包含在一个要部署的zip中。因此,作为独立应用程序,它可以正常工作。

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

使应用程序在IDEA中运行时能够构建,运行和检测插件,同时保持松散耦合在gradle级别上的最佳实践是什么?

我认为一些想法:

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

2)以某种方式将其他项目配置添加到IDEA项目。是否可以在不重新解析每个gradle脚本的情况下完成它?

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

有最佳做法吗?

最佳答案

好吧,我想出了一个解决方案。

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

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

根项目取决于 core和附加的 plugin项目,因此当我从IDEA运行它或构建发行版时,它都将完成。

另一方面,这些插件现在可能依赖于 core,将没有循环依赖关系。

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

关于gradle - 如何使用Gradle为单独的子项目依赖项配置IDEA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54852630/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com