我们有2个使用Gradle和maven构建的Java多模块(复合)项目(位于2个存储库中)。 Gradle项目依赖于Maven项目,我们需要从反射(reflect)在Gradle项目中的Maven项目中获取更改。 Gradle项目使用存储库> mavenLocal>内容过滤通过本地Maven存储库引用Maven项目。 (即使Gradle不鼓励使用mavenLocal,我们在这里也没有更好的选择)

repositories {
  mavenLocal {
     content {
        includeGroupByRegex "REGEX"
     }
  }
  maven {
     url "REPO_URL"
  }
}
当通过命令执行Gradle构建时,更改Maven项目将反射(reflect)在gradle项目中。
我们也可以在IntelliJ IDEA中打开maven和Gradle项目。但是,当浏览源代码时(假设Gradle项目实现了Gradle项目的接口(interface),并且当我们单击Gradle项目的已实现类声明中的接口(interface)时),它将指向本地maven存储库中的源jar中的类。有没有一种方法可以将IDEA配置为指向已经导入到IDE中的maven项目上的确切源。
请注意以下几点:
  • Gradle项目指的是Maven项目
  • 的准确快照
  • 使用IntelliJ IDEA 2019.1.3(社区版)
  • 最佳答案

    如果我们假设

  • 源.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

  • this answer from intellijthis answer referred in the comments中所述,模块的顺序和库依赖在集成中很重要。我们需要按如下所示将所需的maven子模块手动添加到相应的gradle-sub-module,并在从本地存储库解析相同的库依赖项之前手动将其向上移动。
    module:gradle-project-parent> module:gradle-sub-module-impl> main>依赖关系
  • 模块:maven-sub-module-api
  • 库:maven-sub-module-api(来自本地存储库的依赖项)

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

    10-07 19:03
    查看更多