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

Gradle + Buildship - Switch dependency between JAR and projects

我在按我想要的方式为 Eclipse 配置 Buildship 时遇到了一些问题。我目前有超过 50 个项目总是在 Eclipse 中打开,但我想转移到只有我在 Eclipse 中积极工作的项目,而其他项目将使用 Maven 存储库来解决它们的依赖关系。

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

我说的行为是详细的here

有没有办法使用 Buildship 做到这一点?或者我应该使用另一个 Gradle Eclipse 插件吗?

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

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

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

  4. 如果您想使用 eclipse plugin instead of buildship you use the whenMerged or withXml 挂钩调整生成的 .classpath 文件以指向您工作区内的项目(请注意,eclipse 现在的构建方式与 gradle 命令行).

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

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

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

  • 。它需要在 build.gradle 文件或从 build.gradle 文件调用的方法中完成。
  • 您需要刷新工作区。