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

Java 我们如何将IntelliJ IDEA中的maven和gradle项目与源代码浏览支持集成?,java,maven,gradle,intellij-idea,Java,Maven,Gradle,Intellij Idea,我们有两个使用Gradle和maven构建的java多模块(复合)项目(位于两个存储库中)。Gradle项目依赖于maven项目,我们需要从maven项目中获得反映在Gradle项目中的更改。Gradle项目是指通过使用repositories>mavenLocal>content filtering的本地maven repo来实现的maven项目。(尽管Gradle不鼓励提及mavenLocal,但我们这里没有更好的选择) 当我们通过命令执行gradle构建时,maven项目的变化反映在gra

我们有两个使用Gradle和maven构建的java多模块(复合)项目(位于两个存储库中)。Gradle项目依赖于maven项目,我们需要从maven项目中获得反映在Gradle项目中的更改。Gradle项目是指通过使用repositories>mavenLocal>content filtering的本地maven repo来实现的maven项目。(尽管Gradle不鼓励提及mavenLocal,但我们这里没有更好的选择)

当我们通过命令执行gradle构建时,maven项目的变化反映在gradle项目中

我们也可以在IntelliJ IDEA中打开maven和Gradle项目。但是当浏览源代码时(假设Gradle项目实现了来自Gradle项目的接口,当我们在Gradle项目的已实现类声明中单击该接口时),它指向本地maven repo中源代码jar中的类。是否有一种方法可以配置IDEA以指向maven项目上已经导入IDE的确切源代码

请注意:

  • Gradle项目指的是maven项目的精确快照
  • 使用IntelliJ IDEA 2019.1.3(社区版)
    • 如果我们假设

      • JAR也已经部署到maven本地存储库中 (来自maven项目)和
      • 在此上下文中,项目设置>模块如下所示
      Maven模块
      • 模块:maven项目父级
      • 模块:maven子模块api
      • 模块:maven子模块impl
      梯度模
      • 模块:gradle项目父级
      • 模块:渐变子模块api
      • 模块:渐变子模块impl
      如中所述,模块和库依赖项的顺序在集成中起着重要作用。我们需要手动将所需的maven子模块添加到相应的gradle子模块中,如下所示,并在本地存储库解析相同的库依赖关系之前手动将其上移

      模块:渐变项目父级>模块:渐变子模块impl>main>Dependencies

    • 模块:maven子模块api
    • 库:maven子模块api(依赖于本地repo)
    • 然后,您将能够按照预期从gradle项目链接导航到maven项目源。

      如果我们假设

      • JAR也已经部署到maven本地存储库中 (来自maven项目)和
      • 在此上下文中,项目设置>模块如下所示
      Maven模块
      • 模块:maven项目父级
      • 模块:maven子模块api
      • 模块:maven子模块impl
      梯度模
      • 模块:gradle项目父级
      • 模块:渐变子模块api
      • 模块:渐变子模块impl
      如中所述,模块和库依赖项的顺序在集成中起着重要作用。我们需要手动将所需的maven子模块添加到相应的gradle子模块中,如下所示,并在本地存储库解析相同的库依赖关系之前手动将其上移

      模块:渐变项目父级>模块:渐变子模块impl>main>Dependencies

    • 模块:maven子模块api
    • 库:maven子模块api(依赖于本地repo)

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

      在构建JAR(现在位于maven repo中)时,您是否构建了源JAR?当您看到反编译的JAR时,您是否也看到了“附加源”选项?请参阅:当您说可以在IntelliJ中同时打开maven和Gradle项目时,您的意思是作为单独的项目,还是作为同一项目中的模块?因为如果将它们作为模块包含在同一个项目中,IntelliJ应该允许您从一个模块导航到另一个模块other@DariusX. 感谢您指出,它是从源jar反编译的。jar也被部署到maven本地存储库中。我检查了编辑器中加载的类的路径,该类具有以下语法<代码>\\\--sources.jar\\ClassName.java编辑器中显示的类是不可编辑的(就像我们浏览类时,多个链接的maven项目之间的方法)@afterburner这些maven和Gradle项目也是复合/多模块项目。我尝试将它们添加为单独的项目(工具窗口>添加项目)以及现有源中的模块(文件>新建>现有源中的模块)。我甚至尝试创建一个空项目,并将两个项目都添加为模块。但是在所有场景中,依赖Maven模块的浏览类/方法都会从本地Maven repo中的sources.jar指向源代码,而不是指向打开的Maven项目中的确切源代码?这应该会自动完成。这有用吗?在构建JAR(现在在maven repo中)时,您是否构建了源JAR?当您看到反编译的JAR时,您是否也看到了“附加源”选项?请参阅:当您说可以在IntelliJ中同时打开maven和Gradle项目时,您的意思是作为单独的项目,还是作为同一项目中的模块?因为如果将它们作为模块包含在同一个项目中,IntelliJ应该允许您从一个模块导航到另一个模块other@DariusX. 感谢您指出,它是从源jar反编译的。jar也被部署到maven本地存储库中。我检查了编辑器中加载的类的路径,该类具有以下语法<代码>\\\--sources.jar\\ClassName.java编辑器中显示的类是不可编辑的(就像我们浏览类时,多个链接的maven项目之间的方法)@afterburner这些maven和Gradle项目也是复合/多模块项目。我试图将它们添加为
      repositories {
        mavenLocal {
           content {
              includeGroupByRegex "REGEX"
           }
        }
        maven {
           url "REPO_URL"
        }        
      }