Gradle + Buildship - 在 JAR 和项目之间切换依赖关系

Posted

技术标签:

【中文标题】Gradle + Buildship - 在 JAR 和项目之间切换依赖关系【英文标题】:Gradle + Buildship - Switch dependency between JAR and projects 【发布时间】:2015-12-13 00:43:36 【问题描述】:

我在按照我想要的方式配置 Buildship for Eclipse 时遇到了一些问题。我目前在 Eclipse 中始终打开 50 个以上的项目,但我想只在 Eclipse 中使用我正在积极处理的项目,而其他项目将使用 Maven 存储库来解决它们的依赖关系。

假设 ProjectA(其中包含一个 main)依赖于 ProjectB(一个库项目)。如果 ProjectB 在 Eclipse 中打开,我希望 ProjectA 直接使用 ProjectB。运行 ProjectA 时,ProjectB 中的代码更改会很明显。但是,如果 ProjectB 已关闭,我希望 ProjectA 使用位于 build.gradle 文件中提到的 Maven 存储库中的 ProjectB 的 JAR。

我所说的行为详细here。

有没有办法使用 Buildship 做到这一点?还是应该使用另一个 Gradle Eclipse 插件?

【问题讨论】:

【参考方案1】:

    Gradle 3.1 中添加了一个新的 composite build support 功能。此功能改变了游戏规则,让您可以轻松地同时处理多个项目。

    您可以使用dependency substitution rules 将存储库依赖项替换为本地项目依赖项。

    如果每个项目都在它自己独立的 git/subversion 存储库中,您可以使用 prezi pride 来管理项目的“骄傲”。您可以将(动态生成的)多模块构建导入 buildship。

    1234563构建与 gradle 命令行不同)。

【讨论】:

【参考方案2】:

为了完成,我最终按照 Lance Java 的建议进行了依赖替换。这种方法有以下优点:

不需要第三方软件。 独立于 IDE。我们不会直接修改 .classpath 文件,而是让 Eclipse 插件(或任何其他 IDE 插件)处理这个问题。 其他插件可以访问我们要使用的实际依赖项。

但是,这种方法存在一些问题:

Dependency substitution cannot be done inside a task。它需要在 build.gradle 文件中或在从 build.gradle 文件调用的方法中完成。 您需要刷新工作区。

【讨论】:

如果我弄错了,请纠正我,但此解决方案仅适用于 gradle 项目。如果我需要用不属于 gradle 构建的工作区项目替换依赖项怎么办?

以上是关于Gradle + Buildship - 在 JAR 和项目之间切换依赖关系的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Eclipse Buildship 插件中运行“gradle init”任务?

eclipse gradle插件Buildship  不支持gradle6.5或更高版本了吗?

使用Gradle构建构建一个Java Web工程及持续集成环境Jenkins配置

如何使用buildship for android?

手动安装gradle插件

如何使用 Android 的 buildship?