首页 > 解决方案 > 如何使用另一个 gradle 项目,比如源代码在主项目中

问题描述

我是 gradle 新手,所以我认为/希望这是一个初学者的问题。

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

目录结构:

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

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

在我切换到 gradle 之前,我只是将这个库项目作为依赖项添加到我的应用程序项目中,并且我能够从那里开始使用这些类。我能够更改/扩展库项目的内容,并在我的应用程序项目中直接(实时)受益。如果要部署,我只需将库项目中的所有这些类直接包含到我的应用程序项目的 JAR 中。

现在在 gradle 的世界中,我找不到以这种方式包含这些类的解决方案。我目前的理解是,我需要将我的库项目部署到 mavenLocal 并像我的应用程序项目中的任何其他 3rd-Party 库一样使用这些库。这很酷但是很复杂,因为我经常需要重建我的库并将其重新部署到我的 mavenLocal。即使我只是将一个新的公共静态变量添加到一个类中,我也需要一直部署 lib 并刷新我的应用程序,这太过分了。

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

标签: javaeclipsegradle

解决方案


如果您的项目经常一起更改,请考虑将它们合并到一个单一存储库中并利用多模块构建,这将导致类似于以下的目录结构

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

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

dependencies {
    implementation project(':library')
}

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

Gradle 提供的另一个选项是复合构建

复合构建允许您组合通常独立开发的构建,例如在您的应用程序使用的库中尝试修复错误时。

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

settings.gradle

rootProject.name = 'application1'

includeBuild '../library'

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


推荐阅读