java - 我们如何将 IntelliJ IDEA 中的 maven 和 gradle 项目与源代码浏览支持集成?
问题描述
我们有 2 个使用 Gradle 和 maven 构建的 java 多模块(复合)项目(位于 2 个存储库中)。Gradle 项目依赖于 maven 项目,我们需要从 maven 项目中获取反映在 Gradle 项目中的更改。Gradle 项目是指通过本地 maven repo 使用 repositories > mavenLocal > 内容过滤的 maven 项目。(尽管 Gradle 不鼓励引用 mavenLocal,但我们在这里没有更好的选择)
repositories {
mavenLocal {
content {
includeGroupByRegex "REGEX"
}
}
maven {
url "REPO_URL"
}
}
当我们通过命令执行 Gradle 构建时,maven 项目的更改会反映在 gradle 项目中。
我们也可以在 IntelliJ IDEA 中打开 maven 和 Gradle 项目。但是在浏览源代码时(假设 Gradle 项目实现了 Gradle 项目的接口,当我们点击 Gradle 项目的已实现类声明中的接口时)它指向本地 maven repo 中源 jar 中的类。有没有一种方法可以将 IDEA 配置为指向已经导入 IDE 的 maven 项目上的确切源。
请注意以下事项:
- Gradle项目指的是maven项目的确切SNAPSHOT
- 使用 IntelliJ IDEA 2019.1.3(社区版)
解决方案
如果我们假设,
- 源 .jars 也已部署到 maven 本地存储库(来自 maven 项目)和
- 在此上下文中,项目设置 > 模块如下所示
Maven 模块
- 模块:maven-project-parent
- 模块:maven-sub-module-api
- 模块:maven-sub-module-impl
摇篮模块
- 模块:gradle-project-parent
- 模块:gradle-sub-module-api
- 模块:gradle-sub-module-impl
正如intellij的这个答案和评论中提到的这个答案所述,模块和库依赖关系的顺序在集成中很重要。我们需要手动将所需的 maven 子模块添加到相应的 gradle-sub-module 中,并在从本地存储库解析相同的库依赖项之前手动将其上移。
模块:gradle-project-parent > 模块:gradle-sub-module-impl > main > 依赖项
- 模块:maven-sub-module-api
- 库:maven-sub-module-api(来自本地仓库的依赖)
然后,您将能够按预期从 gradle 项目链接导航到 maven 项目源。
推荐阅读
- pygame - Pygame - 雪碧
- lazarus - 在 Free Pascal / Lazarus 中使用 SelectDirectoryDialog (TSelectDirectoryDialog) 时出现异常
- python - 使用ctypes时如何替换libm?
- mysql - MySQL - 数据太长?
- javascript - React,客户端移动或桌面
- python - Excel 嗅探、正则表达式和子字符串匹配
- c# - 如果字段包含 null 则整个连接结果为 null
- javascript - 在 REACT 中使用 js 和 css 轮播
- openstack - Openstack热环境参数文件默认值无效错误
- mysql - 如何从另一个表中选择没有重复项?