如何使用另一个 gradle 项目,就像源代码在主项目中一样

How to use another gradle project like if the sources were inside the main project

我是 gradle 的新手,所以我 think/hope 这是一个初学者问题。

假设我有两个应用程序项目和一个库项目,我在其中放置了 Utils 和共享 类 之类的东西,我经常在这两个应用程序中使用它们。

目录结构:

|
|-- library
|
|-- application1
|
`-- application2

更准确地说:一个应用程序是我的“服务器”,另一个是“客户端”,库是两者之间的共享部分。

在我切换到 gradle 之前,我只是将这个库项目添加为我的应用程序项目的依赖项,然后我就可以从那里开始使用 classes。我能够 change/extend 图书馆项目的内容并直接(实时)受益于我的应用程序项目。如果它要部署,我只是将库项目中的所有这些 classes 直接包含到我的应用程序项目的 JAR 中。

现在在 gradle 的世界里,我找不到以这种方式包含这些 classes 的解决方案。我目前的理解是,我需要将我的库项目部署到 mavenLocal,并像我的应用程序项目中的任何其他第 3 方库一样使用这些库。这很酷,但也很复杂,因为我经常需要重建我的库并将其重新部署到我的 mavenLocal。即使我只是向 class 添加一个新的 public 静态变量,我也需要一直执行到部署库和刷新我的应用程序,这是一种矫枉过正的方法。

gradle 中没有更简单的集成机制,以便我能够像以前一样“仅”将我的库集成到我的应用程序中吗?

如果您的项目经常一起更改,请考虑将它们合并到单一存储库中并利用 multi module builds 这将导致目录结构类似于

Root project 'multiproject'
+--- Project ':library'
+--- Project ':application1'
+--- Project ':application2'

您的应用程序项目可能会依赖于库模块

dependencies {
    implementation project(':library')
}

官方文档是 descent 并包含有关此主题的详细用户指南。

另一个选项 Gradle 优惠是 composite builds

Composite builds allow you to combine builds that are usually developed independently, for instance when trying out a bug fix in a library that your application uses.

制定复合构建的一个选项是将库项目的构建包含在您的应用程序项目中。

settings.gradle:

rootProject.name = 'application1'

includeBuild '../library'

由于您添加了 eclipse 标签,我可以确认 Eclipse 支持复合构建,并且应用程序项目将在 IDE 中设置项目依赖项。无需通过 Maven 本地存储库。