繁体   English   中英

我们如何将 IntelliJ IDEA 中的 maven 和 gradle 项目与源代码浏览支持集成?

[英]How can we integrate maven and gradle projects in IntelliJ IDEA with source browsing support?

我们有 2 个使用 Gradle 和 maven 构建的 java 多模块(复合)项目(位于 2 个存储库中)。 Gradle 项目依赖于 maven 项目,我们需要从 maven 项目中得到反映在 Z7B5CC4FB56E11DC3CABB27 项目中的更改。 Gradle 项目是指 maven 项目,通过本地 maven repo 使用存储库 > mavenLocal > 内容过滤。 (尽管 Gradle 不鼓励参考 mavenLocal,但我们这里没有更好的选择)

repositories {
  mavenLocal {
     content {
        includeGroupByRegex "REGEX"
     }
  }
  maven {
     url "REPO_URL"
  }        
}

当我们通过命令执行 Gradle 构建时,maven 项目的更改反映在 gradle 项目中。

我们也可以在 IntelliJ IDEA 中打开 maven 和 Gradle 项目。 But when browsing the source (just assume Gradle project implements an interface from the Gradle project, and when we clicked on the interface in the implemented class declaration of Gradle project) it points to the class from the sources jar in local maven repo. 有没有一种方法可以将 IDEA 配置为指向 maven 项目中的确切源,该项目已在 IDE 中导入。

请注意以下事项:

  • Gradle 项目指的是 maven 项目的确切 SNAPSHOT
  • 使用 IntelliJ IDEA 2019.1.3(社区版)

如果我们假设,

  • sources.jars 也已部署到 maven 本地存储库(来自 maven 项目)和
  • 在此上下文中,项目设置 > 模块如下所示

Maven模块

  • 模块:maven-project-parent
  • 模块:maven-sub-module-api
  • 模块:maven-sub-module-impl

Gradle模块

  • 模块:gradle-project-parent
  • 模块:gradle-sub-module-api
  • 模块:gradle-sub-module-impl

正如intellij这个答案和评论中提到的这个答案所述,模块和库依赖关系的顺序在集成中很重要。 我们需要手动将所需的 maven 子模块添加到相应的 gradle-sub-module 中,如下所示,并在从本地存储库解析相同的库依赖项之前手动将其上移。

模块:gradle-project-parent > 模块:gradle-sub-module-impl > main > 依赖项

  1. 模块:maven-sub-module-api
  2. 库:maven-sub-module-api(来自本地仓库的依赖)

然后,您将能够按预期从 gradle 项目链接导航到 maven 项目源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM